首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Timespan(0,0,secs)或Timespan.FromSeconds(secs)

Timespan(0,0,secs)或Timespan.FromSeconds(secs)
EN

Stack Overflow用户
提问于 2014-02-03 11:49:18
回答 3查看 6.3K关注 0票数 4

Timespan(0,0,secs)Timespan.FromSeconds(secs)之间的返回值有区别吗?

在我看来,不同之处在于FromSeconds接受double

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-03 11:54:05

最终,不,在引擎盖下,TimeSpan处理蜱。

就我个人而言,我更喜欢使用TimeSpan.FromSeconds,因为它的意图是完全清楚的。

票数 9
EN

Stack Overflow用户

发布于 2014-02-03 12:03:26

在第二种情况下,参数是double,这确实是一个重要的区别:在某些情况下,它可能导致OverflowException。引用以下文件。

TimeSpan构造器(Int32,Int32,Int32)

指定的小时、分钟和秒被转换为刻度,该值初始化此实例。

TimeSpan.FromSeconds法

值参数被转换为毫秒,后者被转换为刻度,而这几个滴答数被用来将新的TimeSpan初始化。因此,数值只能被认为是精确到最近的毫秒。注意,由于双重数据类型的精度下降,这可以为接近但仍在MinValue或MaxValue范围内的值生成一个OverflowException,例如,在下面试图实例化TimeSpan对象时,这就是OverflowException的原因。 //以下代码在运行时抛出一个TimeSpan.FromSeconds(TimeSpan.MaxValue.TotalSeconds);OverflowException TimeSpan maxSpan =

票数 3
EN

Stack Overflow用户

发布于 2014-02-03 11:54:15

您可以很容易地测试它:

代码语言:javascript
复制
int secs = 10;
var ts = new TimeSpan(0, 0, secs);
var ts2 = TimeSpan.FromSeconds(secs);
if(ts == ts2)
{
    Console.WriteLine("Equal");
}
else
{
   Console.WriteLine("Not Equal");
}

输出是:Equal

尽管我发现TimeSpan.FromSeconds方法比构造函数更具可读性,因此不太容易出错。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21526629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档