0

这是一段简单的 C# 代码:

Convert.ToInt32(TimeSpan.FromMinutes(5).TotalMilliseconds);
//which brings me 300000

(int)TimeSpan.FromMinutes(5).Milliseconds;
//which brings me 0

为什么(int)与 相比,铸造结果会有所不同Convert.ToInt32()

两者不应该带来相同的结果吗?

4

7 回答 7

8

在第一个版本中,您正在使用该TotalMilliseconds属性 - 在第二个版本中,您正在使用Milliseconds.

举一个更简单的例子,没有强制转换或调用Convert.ToInt32

TimeSpan ts = TimeSpan.FromHours(49);
Console.WriteLine(ts.Hours); // 1 (it's two days and one hour) 
Console.WriteLine(ts.TotalHours); // 49 (it's 49 hours in total)
于 2011-12-06T22:36:49.607 回答
3

毫秒只是 5 秒中的毫秒部分。在第二个上也使用 TotalMilliseconds。

于 2011-12-06T22:36:52.577 回答
2

在您的第一个示例中,您使用 TotalMilliseconds,然后只使用毫秒。

于 2011-12-06T22:37:39.357 回答
1

您的错误是在第二个示例中您调用的是.Milliseconds属性,而不是.TotalMilliseconds属性。

前者以毫秒为单位返回 5 分钟。后者返回 5 分钟的毫秒部分,即 0。

演员与皈依者是一条红鲱鱼!

于 2011-12-06T22:36:53.933 回答
1

您从第二行中遗漏了“总计”。所以,这行得通。

(int)TimeSpan.FromMinutes(5).TotalMilliseconds;
于 2011-12-06T22:38:43.467 回答
1

它们是相同的……您使用了 TotalMilliseconds 与 Milliseconds。第一个是 5 分钟内的总毫秒数,而第二个是余数,或者如果您想在 '00:05:00.000' 中显示时间 IE '000' 将显示的值

于 2011-12-06T22:39:31.750 回答
1

问题不在于转换,而是您正在比较 TotalMilliseconds 和 Milliseconds!

于 2011-12-06T22:39:51.943 回答