这个:
const int a = 5;
编译没有问题,然而
const var a = 5;
不管什么时候,只要条件不成立,就一直循环执行某段代码:
var a = 5;
这段代码的编译与下面的代码一样:
int a = 5;
为什么?
这个:
const int a = 5;
编译没有问题,然而
const var a = 5;
不管什么时候,只要条件不成立,就一直循环执行某段代码:
var a = 5;
这段代码的编译与下面的代码一样:
int a = 5;
为什么?
var myVariable = "some value";
instead of
System.Collections.Generic.Dictionary<string, System.Collections.ObjectModel.ObservableCollection<System.Data.DataTable>> myVariable = new System.Collections.Generic.Dictionary<string, System.Collections.ObjectModel.ObservableCollection<System.Data.DataTable>>();
var dict = new Dictionary<string, List<Definition>>();
使用匿名类型时,这变得必要。
对于常量来说,这不是一个问题。
内置类型名称中最长的带有常量字面值的是decimal
; 这不是一个非常长的名称。
可以拥有任意长的enum
名称作为常量使用,但是C#编译器团队似乎并不关心这个问题。
首先,如果你正在创建一个常量enum
值,你可能会把它放在enum
中。
此外,enum
名称不应该太长。(不像复杂的泛型类型,它们可以并且经常应该很长)
这是编译器的限制,Eric Lippert在这里给出了这种限制的原因。
没有 var 的常量:
const int Value1 = 1;
const int Value2 = 2;
使用 var 定义的常量(匿名类型属性值在创建后不能更改):
var constants = new {
Value1 = 1,
Value2 = 2,
};
//use as constants.Value1
由于常量必须是内置的数字类型或字符串
,因此您实际上并没有节省多少空间;const int
与const var
和int
的长度相同,而int
可能是最常见的常量类型。然后还有double
,它真的不是很长。如果您需要输入大量这些内容,请使用Alt选择功能;-)
const
是“constant”的简写;var
是“variable”的简写。常量和变量是极端相反的,使得const var
成为一个矛盾修辞法。 - LukeHvar
声明的变量在编译时使用类型推断(http://en.wikipedia.org/wiki/Type_inference)进行**静态**类型化。 - Juliet