zoukankan      html  css  js  c++  java
  • (转载)C# 3.X 新特性介绍

    较之C# 2.0, C# 3.x引入了一系列新的特性,为我们编程带来很大的便利,通过有效地利用这些新特性,我们可以编写出更加简洁、优雅的程序。不过这些新特性仅仅是编译器给我们耍的小花招:在编译的时候加入一些必要的Code,使这些在C# 2.0角度看略显“残缺”的Code变得“完整”,实际上最终生成的Assembly和在C# 2.0时代并没有本质的不同。为此,有些人对这些新特性不以为然,觉得仅仅是一些表面文章。但是我的观点是:既然这些特性能给我们带来便利,干嘛不用呢?

    本系列的着重点并不是放在如果去应用这些新特性上(实际上使用这些特性是很简单的),而是更多地落在对这些特性的实现的介绍上面:编译器到底在编译的时候加了哪些额外的代码来完善这些略显“残缺”的代码。
    [第1篇] Anonymous Type
    Anonymous Type允许我们定义一个对象并初始化一组任意的属性列表,而这个对象对应的Type并不是预先定义的。比如:

       1: var v = new{ID = Guid.NewGuid(), Name= "Zhang San" };

      

    [第2篇] Extension Method
    通过Extension Method,我们可以不改变Type定义的前提下对其方法成员进行扩展:我们在另一个Type中定一个一个特性的Static 方法,使之作为这个Type的Extension Method,这样的方法可以象其它方法一样的方法进行调用。LINQ的Operator,比如Where,From,Order by等,都是通过这样的进行定义的。

     

    [第3篇] Lambda Expression

    Lambda Expression被广泛使用到LINQ中,其本质就是一个Delegate。在这部分中,我将介绍Lambda Expression是如何通过一个Delegate来实现的。

     

    [第4篇] Automatically Impemented Property

    有了Automatically Implemented Property,我们可以简化传统的private field + public property的属性定义方式,就像这样:

       1: public class Vector 
       2: {
       3:      public double X { get; set; }
       4:      public double Y { get; set; }
       5: }

     

    [第5篇] Object Initializer & Collection Initializer

    Object Initializer & Collection Initializer是我将对象的创建和初始化合二为一:通过Object Initializer使用一次调用创建一个对象和初始化其属性成员,通过Collection Initializer在创建Collection对象的时候同时初始化该Collection的初始成员: 

       1: Vector v = new Vector { X = 1, Y = 2 };          
       2: IList<string> list = new List<string> { "Zhang San", "Li Si", "Wang Wu" };
  • 相关阅读:
    Trusted_Connection
    自定义绑定表达式
    【Android】Uri、UriMatcher、ContentUris详解
    Android事件传递机制【按键事件】
    ANDROID 9.PNG 图片制作
    Android ProGuard实例教程
    Android 几个Info系列类的总结
    NDK的讲义
    Android FrameWork——Touch事件派发过程详解
    【Android面试】Android面试题集锦 (陆续更新)
  • 原文地址:https://www.cnblogs.com/martintuan/p/1951702.html
Copyright © 2011-2022 走看看