C# 中的强制转换和 Convert.ToInt32() 表现不同?

发布于 2024-12-20 00:57:28 字数 296 浏览 2 评论 0原文

这里有一段简单的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

九公里浅绿 2024-12-27 00:57:28

在第一个版本中,您使用 TotalMilliseconds属性 - 在您使用的第二个中 毫秒

举一个更简单的示例,无需转换或调用 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)

In the first version you're using the TotalMilliseconds property - in the second you're using Milliseconds.

To give a simpler example, with no casting or calling to 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)
喜你已久 2024-12-27 00:57:28

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

The milliseconds is just the milliseconds PORTION of the 5 seconds. Use TotalMilliseconds on the second one as well.

星星的軌跡 2024-12-27 00:57:28

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

In you first example you use TotalMilliseconds and then just Milliseconds.

深居我梦 2024-12-27 00:57:28

您的错误是在第二个示例中您调用的是 .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!

仅此而已 2024-12-27 00:57:28

您从第二行遗漏了“总计”。所以,这有效。

(int)TimeSpan.FromMinutes(5).TotalMilliseconds;

You left out "Total" from the second line. So, this works.

(int)TimeSpan.FromMinutes(5).TotalMilliseconds;
只为守护你 2024-12-27 00:57:28

它们是相同的......您使用了 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'

如何视而不见 2024-12-27 00:57:28

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

The issue is not the conversion but that you are comparing TotalMilliseconds and Milliseconds!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文