27

这个:

const int a = 5;

编译得很好,而

const var a = 5;

不...而:

var a = 5;

编译和这个一样:

int a = 5;

为什么?

4

4 回答 4

22

var关键字旨在使您免于编写长而复杂的类型名,这些类型名不能是常量。

能够编写如下声明非常方便

var dict = new Dictionary<string, List<Definition>>();

使用匿名类型时,它变得很有必要。

对于常量,这不是问题。
具有常量字面量的最长内置类型名是decimal; 这不是一个很长的名字。

可以使用任意长的enum名称作为常量,但 C# 编译器团队显然并不关心这一点。
一方面,如果你要制作一个常enum量值,你不妨把它放在enum.
此外,enum名称不应该太长。(不像复杂的泛型类型,它可以而且经常应该)

于 2011-05-26T00:13:54.297 回答
8

这是一个编译器限制,Eric Lippert在这里给出了限制的原因

于 2011-05-26T00:15:34.800 回答
2

没有 var 的常量:

const int Value1 = 1;
const int Value2 = 2;

带有 var 的常量(匿名类型属性值在创建后无法更改):

var constants = new { 
  Value1 = 1, 
  Value2 = 2,
};
//use as constants.Value1
于 2013-09-05T06:27:16.837 回答
0

由于常量必须是内置数字类型 or string,因此您并没有真正节省太多;const int长度相同const var并且int可能是最常见的常量类型。然后double是真的没有那么长。如果您有很多要输入的内容,请使用 Alt 选择功能 ;-)

于 2011-05-26T00:16:48.807 回答