C# 中的强制转换和 Convert.ToInt32() 表现不同?
这里有一段简单的 C# 代码:
Convert.ToInt32(TimeSpan.FromMinutes(5).TotalMilliseconds);
//which brings me 300000
(int)TimeSpan.FromMinutes(5).Milliseconds;
//which brings me 0
与 Convert.ToInt32()
相比,为什么转换 (int)
结果会不同?
两者不应该带来相同的结果吗?
Here a simple C# piece of code:
Convert.ToInt32(TimeSpan.FromMinutes(5).TotalMilliseconds);
//which brings me 300000
(int)TimeSpan.FromMinutes(5).Milliseconds;
//which brings me 0
Why would casting (int)
result is different when compared to Convert.ToInt32()
?
Shouldn't both bring the same result?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
在第一个版本中,您使用
TotalMilliseconds
属性 - 在您使用的第二个中
毫秒
。举一个更简单的示例,无需转换或调用
Convert.ToInt32
:In the first version you're using the
TotalMilliseconds
property - in the second you're usingMilliseconds
.To give a simpler example, with no casting or calling to
Convert.ToInt32
:毫秒只是 5 秒中的部分毫秒。在第二个上也使用 TotalMilliseconds。
The milliseconds is just the milliseconds PORTION of the 5 seconds. Use TotalMilliseconds on the second one as well.
在第一个示例中,您使用 TotalMilliseconds,然后仅使用毫秒。
In you first example you use TotalMilliseconds and then just Milliseconds.
您的错误是在第二个示例中您调用的是
.Milliseconds
属性,而不是.TotalMilliseconds
属性。前者以毫秒为单位返回 5 分钟。后者返回 5 分钟的毫秒部分,该部分为零。
演员与皈依者是一个转移注意力的话题!
Your error is that in the second example you are calling the
.Milliseconds
property, not the.TotalMilliseconds
property.The former returns 5 minutes in milliseconds. The latter returns the millisecond portion of 5 minutes, which is zero.
The cast vs. convert is a red herring!
您从第二行遗漏了“总计”。所以,这有效。
You left out "Total" from the second line. So, this works.
它们是相同的......您使用了 TotalMilliseconds 与 Milliseconds。第一个是 5 分钟内的总毫秒数,而第二个是余数,或者如果您想显示时间 IE '00:05:00.000' 中的 '000' 将显示的值
They're the same... you've used TotalMilliseconds vs Milliseconds. The first is the total number of milliseconds in 5 minutes, whereas the second is the remainder, or the value which would be displayed if you wanted to display the time IE the '000' in '00:05:00.000'
问题不在于转换,而在于您正在比较 TotalMilliseconds 和 Milliseconds!
The issue is not the conversion but that you are comparing TotalMilliseconds and Milliseconds!