标签:
关键字:隐式类型变量var、扩展方法(extension method)、lambda表达式、自动属性、匿名类型
一、隐式类型
C#是强类型语言,意味着我们在声明变量时必须指定变量的具体类型,但是var可以代替正式的数据类型名(如int, bool, string),编译器会根据用于初始化局部变量的初始值推断出变量的数据类型;我们可以对基类库中的所有类型使用隐式类型,包括数组、泛型、自定义类型。
使用限制:
1、只能应用与方法或者属性内局部变量的声明,不能使用var来定义返回值、参数的类型或类型的数据成员;
2、使用var进行声明的局部变量必须赋初始值,并且不能以null作为初始值。
强类型数据:隐式类型初始化后编译器就已经推断出了确切类型,所以他是强类型。
作用:可以动态根据查询本身的格式来创建结果集,这样我们就不需要显示定义查询可能返回的类型
二、自动属性
因为.NET基类库总是使用类型属性而不是传统的访问和修改方法,所以.NET语言推荐使用类型属性来封装私有数据字段,而不是 使用GetXXX()和SetXXX()方法。
在底层,C#属性会被映射到前缀get_和set_的方法中,即如果定义了Name属性,C#会自动生成get_Name()和set_Name()方法。
在定义自动属性时候,必须同时提供Get和Set关键字。
三、匿名类型
类可以表达一个给定的编程实体,我们通常创建一个C#类,为该类提供必需的一系列属性、方法和事件等,以供重用;而有时候可能需要定义类来封装一些相关数据,而不需要任何相关联的方法、事件,或者该类不需要在项目间重用。
C# 3.0提供的匿名类型,使用新的关键字var和之前介绍的对象初始化语法,如:var worker = new { FirstName = "Vincent", LastName = "Ke", Level = 2 };C#编译器会在编译时自动生成名称唯一的类。因为这个类的名字在C#中是不可见的,所以必需使用var关键字来使用隐式类型化。
匿名类型内部表示:
匿名类型都自动继承自System.Object,可以调用ToString()、GetHashCode()、Equals()、GetType()方法
标签:
原文地址:http://www.cnblogs.com/xionghot/p/4510512.html