C#-var在for循环中的行为与预期不符
本文关键字:for 循环 C#-var | 更新日期: 2023-09-27 18:26:53
我发现使用"var"会导致意外结果。
在下面的代码中,我期望X被声明为数据类型"long"。
为什么X被声明为数据类型"int"?(在这种情况下会导致无限循环)
long maxNumber = (long)int.MaxValue + 1;
long count = 0;
for (var X = 0; X < maxNumber; X++)
{
count++;
}
您为什么期望
var X = 0;
以推断数据类型long
?
var
变量的类型推断只关注初始值的类型。它不考虑用法。
其他人会告诉你如何控制带有后缀的0
的类型。我说,如果你想要一个特定的类型,继续写
long X = 0;
这并不是var
的最佳选择。类型推理主要针对难以命名的类型(IEnumerable<KeyValuePair<string, Converter<TreeViewNode, IEnumerable<TreeViewNode>>>>
任何人?)或根本无法命名的类型,在匿名类型的情况下,或者如果您希望类型自动更改以匹配其他函数的返回类型。积分循环计数器根本没有好处。
var X = 0
这一行声明了X的类型,不管以后如何使用它。当您指定一个没有任何后缀的数字文字时,它将是一个整数。这里有一个可能的解决方案。
var X = 0L