c# - C# 中的毫秒数 - long 还是 int?
问题描述
我正在使用 Milisecond 并且我已经使用它了
Timeout = (int)TimeSpan.FromMinutes(TimeoutVal).TotalMilliseconds
但是我读到很少有人将其投射到的地方long
而不是int
? 这是为什么?
解决方案
我投的唯一原因是它使用的 API 只允许 Int 处于超时状态(例如 Thread.Sleep 或 Task.Delay),但一般来说你不应该这样做,除非 a) 你不这样做注意它是否溢出并导致“意外”行为或b)如果它不应该溢出(比如,你正在使用一个小的超时)。
在所有其他用途中,请勿施放。将其存储在 double 中。
计算最大值。您可以存储在签名 int32 中的小时数(以毫秒为单位):
1s = 1000ms
1m = 60s
1h = 60m
Int32 最大值:2147483647
然后:
int totalSeconds = int.MaxValue / 1000;
int totalMinutes = totalSeconds / 60;
int totalHours = totalMinutes / 60;
结果将是 596.5232 小时。
无论如何,您不应该使用具有如此高值的超时,而是使用取消令牌。但同样,这取决于您正在使用的 API。
推荐阅读
- python - Is it faster to use n = len(s) instead of using len(s) directly?
- c# - 在 UI 线程上调用异步方法
- gradle - 如何使用 Gradle Kotlin-DSL 添加本地资源
- regex - powershell拆分中的正则表达式
- java - 用于数据库视图(不是表)的 JPA/SpringBoot 存储库
- ruby-on-rails - Dokku/Docker 磁盘空间不足 - 如何进入应用程序
- javascript - 按字符串值的长度过滤对象数组
- maven - 如何使用 Maven minify 插件克服“对象文字不能在 ES5 严格模式下包含重复键”错误?
- apache-kafka - 如何在提交日志中处理消息的顺序
- java - 如果没有 @Provides-annotated 方法,就无法提供 Presenter