前端之家收集整理的这篇文章主要介绍了
【转载】深入理解C# 3.0的五项主要改进,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
C# 3.0引入了一个叫做“var”的新关键字。这个关键字允许开发者建立一个变量,但不必明确它的类型
1.隐型局部变量 C# 3.0引入了一个叫做“var”的新关键字。这个关键字允许开发者建立一个变量,但不必明确它的类型。例如,用var说明一个字符串,就像这样:
代码没有作用:
代码输入。例如,在C# 2.0中建立一个Customer对象,需要输入以下
代码:
方法
调用。例如,在C# 2.0中,如果您需要
调用一个返回Customer对象的
方法,您应该编写以下
代码:
方法返回一个不是Customer的对象,这段
代码就无法编译。但是,如果应用var关键字,您就不用担心GetByName返回的对象类型。
方法能够进行改变,返回一个Person对象,这个
方法调用也依然有效。 2.extension
方法 在C#中,您不能继承和扩充用访问标识符
标记为“封装”的类型。但在C# 3.0中,extension
方法允许您扩充任何类,甚至是
标记为封装的类。例如,如果希望
添加一个NoSpaces()
方法到字符串类中,我们要定义一个类似列表A中的extension
方法。 列表A
方法时,开发者就能够对这个类包含的任何字符串
调用NoSapces()
方法。 extension
方法的第一个参数决定extension
方法的有效类型。在这种情况下,“这个字符串数据”(this string data)表明extension
方法适用于字符串类;如果extension
方法以“这个对象数据”(this object data)为第一个参数,则说明这个
方法对每个对象有效。 要表明您希望导入extension
方法,只需在它们的命名空间中
包括一个using指令。例如,要应用上面说明的
方法,需要在类
文件中
包括一个using MyExtensionMethods指令:(列表B) 列表B
方法的优先度比instance
方法低。因此如果instance
方法和extension
方法有同样的签名,则应执行instance
方法。 3.对象初始化器 在C# 2.0中,开发者认为建立许多构造器来设定某个
属性值为对象初始化过程。下面是一个例子:类访问Customer
方法:
方法,它允许您在初始化对象时设定任何属性值。例如,在C# 3.0中,上面的代码块可以写成: 类访问Customer方法:
代码中,没有与初始化对象对应的构造器。这样,开发者就不用为每组需要设定的属性建立不同的构造器。 这样产生的另外一个效果是:代码变得更容易阅读了。例如,虽然我们清楚知道下面的代码对一个Car对象进行了初始化,但我们并不清楚其中变量的作用: