3. 隐含类型局部变量
这是一个语言层面的功能,局部变量被声明为var,这个声明被视为隐含类型局部变量声明,然后由编译器根据局部变量初始化表达式来推断变量的类型。如下面的声明:
Code2:
var integer = 10;要注意的是var在这里是仅仅是一个关键字,它并不是C#3.0中的一种新的类型,而是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,上面的语句相当于:
var name = "Terry Lee";
var numbers = new int[] { 1, 2, 3 };
int integer = 10;在Code2中,变量integer仍然具有强类型,可以做如下测试:
string name = "Terry Lee";
int[] numbers = new int[] { 1, 2, 3 };
Code4:
var integer = 10;编译时会报Cannot implicitly convert type 'string' to 'int'错误。
integer = "Terry Lee";
在这里我们将变量类型的推断任务交给了编译器,那就需要在声明的时候为变量赋值,也不能赋值为null,否则编译器也是无法推断的。另外,var只能用于局部变量,而不能用于字段和属性。
4. 自动属性
自动属性仍然是一个语言层面的功能,它可以使我们不用编写get/set操作以及字段,这一切都由编译其来完成。这样可以简化我们的代码,使我们的代码看起来更加的优雅。如下代码片断所示:
Code5:
public class Customer
{
public String Name
{
get;
set;
}
public int Age
{
get;
set;
}
}
public class Demo
{
public static void Main()
{
Customer c = new Customer();
c.Name = "TerryLee";
}
}