知识大全 深入理解C# 3.0的五项主要改进

Posted 类型

篇首语:逆风的方向,更适合飞翔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 深入理解C# 3.0的五项主要改进相关的知识,希望对你有一定的参考价值。

深入理解C# 3.0的五项主要改进  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

隐型局部变量   C# 引入了一个叫做 var 的新关键字 这个关键字允许开发者建立一个变量 但不必明确它的类型 例如 用var说明一个字符串 就像这样 varmyData = This is my data ;  注意 这里并没有提到myData变量是一个字符串 而C# 却要求这一点   虽然var允许您建立隐含的类型 它并没有降低C#浓厚的类型特征 var关键字只有在建立变量时有用 一旦您建立变量并且确定它的类型以后 就不能再用var来改变一个变量的类型   例如 这段代码没有作用 varmyDate = DateTime Now;myDate = Hello ;  使用var关键字还会产生一个有趣的结果 它可以帮助开发者减少建立变量时的代码输入 例如 在C# 中建立一个Customer对象 需要输入以下代码 Customer myCustomer = new Customer();  使用新的var关键字 则只要输入 varmyCustomer = new Customer();  var关键字的另一个特点在于 使用它可以避免改变一个返回某个类型对象的方法调用 例如 在C# 中 如果您需要调用一个返回Customer对象的方法 您应该编写以下代码 Customer myCustomer = GetByName( Zach );  如果某个时候GetByName方法返回一个不是Customer的对象 这段代码就无法编译 但是 如果应用var关键字 您就不用担心GetByName返回的对象类型 varmyData = GetByName( Zach );  现在 因为应用了var关键字 GetByName方法能够进行改变 返回一个Person对象 这个方法调用也依然有效 extension方法  在C#中 您不能继承和扩充用访问标识符标记为 封装 的类型 但在C# 中 extension方法允许您扩充任何类 甚至是标记为封装的类 例如 如果希望添加一个NoSpaces()方法到字符串类中 我们要定义一个类似列表A中的extension方法   列表A namespaceMyExtensionMethods public static class Extension   public static void NoSpaces(this string data)     return data Replace( );   

  在一个类中导入这个extension方法时 开发者就能够对这个类包含的任何字符串调用NoSapces()方法   extension方法的第一个参数决定extension方法的有效类型 在这种情况下 这个字符串数据 (this string data)表明extension方法适用于字符串类 如果extension方法以 这个对象数据 (this object data)为第一个参数 则说明这个方法对每个对象有效

  要表明您希望导入extension方法 只需在它们的命名空间中包括一个using指令 例如 要应用上面说明的方法 需要在类文件中包括一个using MyExtensionMethods指令 (列表B)  列表B

usingMyExtensionMethods;namespace MyNamespace public class MyClass   public MyClass()     string data = this is my data ;   //nospaces will contain thisismydata    string nospaces = data NoSpaces();   

  注意extension方法的优先度比instance方法低 因此如果instance方法和extension方法有同样的签名 则应执行instance方法

   对象初始化器  在C# 中 开发者认为建立许多构造器来设定某个属性值为对象初始化过程 下面是一个例子 类访问Customer方法 Customer myCustomer = new Customer( Zach Smith );  Customer类构造器 public Customer(string firstName string lastName) : this() this FirstName = firstName; this LastName = lastName;public Customer()  C# 介绍了一个初始化对象的新方法 它允许您在初始化对象时设定任何属性值 例如 在C# 中 上面的代码块可以写成   类访问Customer方法 Customer myCustomer = new CustomerFirstName = Zach LastName = Smith ;  Customer类构造器 public Customer()  在C# 代码中 没有与初始化对象对应的构造器 这样 开发者就不用为每组需要设定的属性建立不同的构造器   这样产生的另外一个效果是 代码变得更容易阅读了 例如 虽然我们清楚知道下面的代码对一个Car对象进行了初始化 但我们并不清楚其中变量的作用

   Car car = new Car( );

  一眼看来 下面这行代码更易阅读 尽管我们必须输入更多代码

   Car car = new Car WheelDiameter = WheelWidth = Horsepower = ;

   匿名类型  C# 引入了匿名方法 C# 推出匿名类型 匿名类型与匿名方法类似 它们都是以嵌入方式建立 并没有正式的名称 在建立一个匿名类型 您必须组合上述对象初始化器和隐型局部变量两个概念 下面是一个匿名类型的例子

   varmyType = new Length = Width = ;

  匿名类型的范围与任何其它变量的范围相同 例如 下面代码块中的cobra实例仅仅在Speed函数块中有效

   private void Speed() var cobra = new Horsepower = Torque = ;

  如果一个匿名类型被初始化而另一个匿名类型位于范围域中 并且它们的签名相同 第二个类型将自己占用第一个类型的类型 例如 在下面这段代码中 cobra和mustang都是匿名类型 并且可以彼此设定

   private void Speed() var cobra = new Horsepower = Torque = ; var mustang = new Horsepower = Torque = ; mustang = cobra; //or you could say cobra = mustang

   LINQ  在之前的C#版中 开发者应用许多不同的查询语言来访问不同的数据源 例如 要查询一个XML文件 开发者会使用XPath 要查询一个SQL数据库 开发者将使用SQL 在过去这种方法十分有效 并且现在仍然是访问各种数据的主要方法 但是 这种方法具有一些缺点 一个显著的缺点在于 开发者必须以一种不同的语言 而非他们当前使用的语言(如SQL或XPath)来编写查询代码 另一个缺点是 在执行某些查询语言 如SQL时 开发者必须编写映射代码将查询结果转化为可用的C#业务对象   C# 推出一种称之为语言集成查询(LINQ)的新方法 应用LINQ 开发者可以编写出能够搜索任何IEnumerable<T>数据源的代码 所以除了应用TSQL访问MS SQL数据库 应用XPath访问XML文件外 他们还可以应用LINQ   下面的代码(列表C)是一个LINQ查询的例子 它返回所有OrderCount大于 的顾客   列表C

   using System;using System Query;using System Collections Generic;public class SampleClass static void Main()    List<Customer> customers = GetCustomers();  //Write our query to retrieve customers who have more than  // orders   IEnumerable<Customer> queryResult = from customer in customers  where customer OrderCount >   orderbycustomer ID  select customer; 

cha138/Article/program/ASP/201311/21719

相关参考

预防向日葵烂头病的五项措施

向日葵菌核病,俗称白腐病、烂头病,是我省的多发病,也是对我省向日葵生产威胁最大病害。可造成茎秆折断,花盘及种子腐烂,对产量影响很大。  主要症状:向日葵菌核病在各生育期均可发生。苗期受害,幼苗基部产生

知识大全 数据绑定深入理解[3]

C#高级编程:数据绑定深入理解[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 数据绑定深入理解[4]

C#高级编程:数据绑定深入理解[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 数据绑定深入理解[1]

C#高级编程:数据绑定深入理解[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 数据绑定深入理解[2]

C#高级编程:数据绑定深入理解[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

促使夏玉米高产的五项措施

为进一步提高夏玉米产量,技术指导员们经过实践,探讨总结了五项夏玉米高产栽培技术措施。  一、选用耐肥耐密高产优种。优良品种是高产的基础,是夺取丰收的关键,为此,可选用浚单20、丰玉4号等紧凑型玉米品种

促使夏玉米高产的五项措施

为进一步提高夏玉米产量,技术指导员们经过实践,探讨总结了五项夏玉米高产栽培技术措施。  一、选用耐肥耐密高产优种。优良品种是高产的基础,是夺取丰收的关键,为此,可选用浚单20、丰玉4号等紧凑型玉米品种

养鱼增效的五项措施

1.适应市场变化,变年底卖鱼为常年卖鱼,搞好轮捕轮放营销策略。“鱼养得好,不如卖得好”在北方大多地区都是春放、秋收,然后秋季集中上市,当然会出现卖鱼难,价格低的现象,影响经济效益。采用多级轮养轮捕能够

养鱼增效的五项措施

1.适应市场变化,变年底卖鱼为常年卖鱼,搞好轮捕轮放营销策略。“鱼养得好,不如卖得好”在北方大多地区都是春放、秋收,然后秋季集中上市,当然会出现卖鱼难,价格低的现象,影响经济效益。采用多级轮养轮捕能够

玉米中耕管理的五项措施

1、查苗、补种、育壮苗。对缺苗断垄的要及时补种或带土移栽,适时间苗定苗,一般3叶间苗,4~5叶定苗,间苗定苗应按密度要求,去弱留强,一般每塘留健壮苗2苗,确保群体水平的提高。  2、适时中耕除草、培土