C# 中的毫秒数 - long 还是 int?
Miliseconds in C# - long or 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 max value: 2147483647
然后:
int totalSeconds = int.MaxValue / 1000;
int totalMinutes = totalSeconds / 60;
int totalHours = totalMinutes / 60;
结果为 596.5232 小时。
无论如何,您不应使用具有如此高值的超时,而应使用取消标记。但同样,这取决于您正在处理的API。
我正在使用 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 max value: 2147483647
然后:
int totalSeconds = int.MaxValue / 1000;
int totalMinutes = totalSeconds / 60;
int totalHours = totalMinutes / 60;
结果为 596.5232 小时。
无论如何,您不应使用具有如此高值的超时,而应使用取消标记。但同样,这取决于您正在处理的API。