-
这里介绍C#隐式类型局部变量,既然是局部变量,那么它就只能用在方法内部了,注意C#是强类型的,引入了一个var并不是像 javascript那样,变成了一个弱类型的语言。
C#语言有很多值得学习的地方,这里我们主要介绍C#隐式类型局部变量,包括介绍C#匿名类型等方面。
C#隐式类型局部变量
还是先介绍一下C#隐式类型局部变量吧:
在C# 3.0里多了一个关键字var,他表示这样的一种类型:C#编译器可以根据上下文推断的出来比如var I = 5;编译器可以根据后面的赋值推断的出来i应该是个整型。既然是局部变量,那么它就只能用在方法内部了,注意C#是强类型的,引入了一个var并不是像 javascript那样,变成了一个弱类型的语言。在编译器第一次编译后var就会被确定的类型所替代的。所以对于C#隐式类型局部变量要注意以下几点:
1.它只能存在于方法内部
2.它不是一个新的类型,只是一个关键字,或者叫做一个占位符,在C#编译器编译后它就会被确定的类型所替代
3.它是编译器根据上下文推断出来的,所以所有一切不能被编译器推断出来的用法都是错误的。比如不能这样使用:var nullValue = null;因为null啥也不是,他是一个空指针,是一个不确定的东西。也不能这样使用:var I = 5;I = “abc”;编译器根据第一个赋值会推断出它是一个整型,但是随后又将一个字符串赋值给它,这是怎么回事呢?
对于var我的建议是不到逼不得已的时候不用,那什么是逼不得已呢?来看我们的匿名类型吧。
由于匿名类型在我们编写代码的时候并不存在,所以匿名类型也不能作为方法的返回值和参数了。”var”一样,也是只能在方法内部使用。现在是不是有点明白什么时候才是逼不得已使用”var”啊?就是在使用匿名类型的时候,匿名类型编译器可以推断出来,但是靠人工又无法推断了。所以我觉得只在编译器可推断而人不可推断的时候才使用C#隐式类型局部变量,靠我们人工可以推断的还是不建议使用,显式的声明变量类型可以增强代码的可读性,这是一个好的编程习惯,不要因为C# 3.0提供了这样的特性就大用而特用。