gpt4 book ai didi

c# - 为什么System.Timers.Timer.Interval 的数据类型是double?

转载 作者:可可西里 更新时间:2023-11-01 07:56:31 25 4
gpt4 key购买 nike

这是一个有点学术性的问题,因为我正在努力思考 Microsoft 使用 double 作为 Interval 属性的数据类型背后的想法!

首先来自 MDSN Interval 是 Elapsed 事件之间的时间,以毫秒为单位;我会将其解释为离散数字,那么为什么要使用 double 呢?肯定 int 或 long 更有意义!?

Interval 可以支持 5.768585(5.768585 毫秒)这样的值吗?尤其是当人们认为 System.Timers.Timer 的精度远不及亚毫秒时... Most accurate timer in .NET?

对我来说似乎有点愚蠢..也许我错过了什么!

最佳答案

反汇编显示间隔是通过调用 (int)Math.Ceiling(this.interval) 消耗的,因此即使您要指定一个实数,它也会变成一个 int 使用前。这发生在名为 UpdateTimer 的方法中。

为什么?不知道,也许规范说在某一时刻需要 double 然后改变了?最终结果是 double 并不是严格要求的,因为它最终被转换为 int 并且不能大于 Int32.MaxValue 根据无论如何,文档。

是的,定时器可以“支持”实数,它只是不告诉你它悄悄地改变了它们。您可以使用 100.5d 初始化并运行计时器,它会将它变成 101

是的,这有点愚蠢:浪费 4 个字节、潜在的隐式转换、转换调用、显式转换,如果他们只使用 int,则所有这些都是不必要的。

关于c# - 为什么System.Timers.Timer.Interval 的数据类型是double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11610611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com