Var这个东西在Javascript是个不可或缺的东西,它标明了作用域,如果没有这个,我们很难控制我们的代码,所以,它的作用已经超出了其表义本身。

在C#的新语法中,也存在这个申明,在C#中,它所扮演的角色就有些暧昧了,情理之外,意料之中。

微软官方说,这个VAr的中文名称叫做:隐含类型。和javascript一样,这个申明一个局部变量,一个不确定类型的局部变量。在以前的书中,好像使用了占位符这样含糊的东西来描述。

我们使用

Var A="A";var B=1;var C=DateTime.Now;

都没有问题,和JavaScript不一样的是,这个申明是强类型的,是告诉编译器,这里有一个变量需要根据初始化的时候确定其类型——是个语法层面的申明。很不凑巧,这个变量是强类型的,和Javascript的松散类型完全不一样。

依照上面的申明,A=1;在C#里面会直接报出编译错误。

还有点遗憾,初始化一个var的时候必须赋值,否则会报出类型必须初始化的编译错误。

尝试使用null进行初始化赋值?不行,这个时候和没有赋值的道理一样。

最后一点,这个var只能是局部变量,不能成为类成员的申明,倒!

如果执意将javascript的语法照搬,那么实际生成的代码应该类似

Var a=1,a="b" è Object a=1;a="b";

方便和不方便都在这里了,我个人觉得没什么必要,这个东西反倒引起混淆,所以,算了,知道咋回事不就结了?

Var在C#下的表现,让我很自然的想到了BOSS里面的一个术语:落地话单!