这个:
const int a = 5;
编译得很好,而
const var a = 5;
没有... while:
var a = 5;
编译就像这样:
int a = 5;
为什么吗
答案 0 :(得分:16)
var
关键字旨在帮助您避免编写长复杂的类型名称,这些名称不能是常量。
能够编写像
这样的声明非常方便var dict = new Dictionary<string, List<Definition>>();
使用匿名类型时,必要。
对于常数,这不是问题
具有常量文字的最长内置类型名称为decimal
;这不是一个很长的名字。
可以使用任意长的enum
名称作为常量,但C#编译器团队显然并不关心这一点。
首先,如果你的enum
值不断变化,你可以将它放在enum
中。
此外,enum
名称不应太长。 (与复杂的泛型类型不同,可以且经常应该这样)
答案 1 :(得分:5)
这是一个编译器限制,这个限制的原因由eric lippert here
给出答案 2 :(得分:2)
没有var的常量:
const int Value1 = 1;
const int Value2 = 2;
var的常量(创建后无法更改匿名类型属性值):
var constants = new {
Value1 = 1,
Value2 = 2,
};
//use as constants.Value1
答案 3 :(得分:0)
由于常量必须是内置数值类型或string
,因此实际上不会节省太多; const int
的长度与const var
相同,int
可能是最常见的常量类型。然后是double
,这真的不是那么久。如果要输入很多内容,请使用Alt选项功能; - )