知识大全 深入理解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相关参考
向日葵菌核病,俗称白腐病、烂头病,是我省的多发病,也是对我省向日葵生产威胁最大病害。可造成茎秆折断,花盘及种子腐烂,对产量影响很大。 主要症状:向日葵菌核病在各生育期均可发生。苗期受害,幼苗基部产生
C#高级编程:数据绑定深入理解[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
C#高级编程:数据绑定深入理解[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
C#高级编程:数据绑定深入理解[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
C#高级编程:数据绑定深入理解[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
为进一步提高夏玉米产量,技术指导员们经过实践,探讨总结了五项夏玉米高产栽培技术措施。 一、选用耐肥耐密高产优种。优良品种是高产的基础,是夺取丰收的关键,为此,可选用浚单20、丰玉4号等紧凑型玉米品种
为进一步提高夏玉米产量,技术指导员们经过实践,探讨总结了五项夏玉米高产栽培技术措施。 一、选用耐肥耐密高产优种。优良品种是高产的基础,是夺取丰收的关键,为此,可选用浚单20、丰玉4号等紧凑型玉米品种
1.适应市场变化,变年底卖鱼为常年卖鱼,搞好轮捕轮放营销策略。“鱼养得好,不如卖得好”在北方大多地区都是春放、秋收,然后秋季集中上市,当然会出现卖鱼难,价格低的现象,影响经济效益。采用多级轮养轮捕能够
1.适应市场变化,变年底卖鱼为常年卖鱼,搞好轮捕轮放营销策略。“鱼养得好,不如卖得好”在北方大多地区都是春放、秋收,然后秋季集中上市,当然会出现卖鱼难,价格低的现象,影响经济效益。采用多级轮养轮捕能够
1、查苗、补种、育壮苗。对缺苗断垄的要及时补种或带土移栽,适时间苗定苗,一般3叶间苗,4~5叶定苗,间苗定苗应按密度要求,去弱留强,一般每塘留健壮苗2苗,确保群体水平的提高。 2、适时中耕除草、培土