Casting和Convert.ToInt32()在C#中表现不同?

Jun*_*r M 0 c# casting type-conversion numeric-conversion

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

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

(int)TimeSpan.FromMinutes(5).Milliseconds;
//which brings me 0
Run Code Online (Sandbox Code Playgroud)

(int)Convert.ToInt32()?相比,为什么投射结果会有所不同?

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

Jon*_*eet 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)
Run Code Online (Sandbox Code Playgroud)