C#语言的新特性及相关知识

.NET各个版本之间的关系
    版本及开发工具和语言
         2002年         2003年           2005年        2006年        2008年
    开发工具     Visual         Visual Studio.Net        Visual Studio      Visual Studio    Visual Studio     

       Studio.Net        2003             2005        2005+扩展      2008     
         2002                      

  语言    C#1.0           C#1.1         C#2.0           没有变化      C#3.0             C#5.0           C#6.0  

      VB.NET(V7.0)      VB.NET(V7.1)      VB.NET(V8.0)               VB.NET(V9.0)   VB.NET(V7.0)      VS2013

  CLR    CLR  V1.0        CLR  V1.1        CLR  V2.0     CLR V2.0       CLR V2.0     CLR4.5      CLR 4.5.1

C#语言新特性
  (1)自动属性和属性访问器的保护级别
     例如:prublic int ID{get;set;}
  (2)可空类型:允许值类型变量为空.
     语法:Nullable<T>,也可以写成T?,T必须是值类型.
     system.Nullable<T>中的结构体成员
         构造函数:Nullable<T>:初始化Nullable<T>结构体并为其指定值.
         方法:Equals:比较跟传入的对象是否相等
       GetHashCode:返回当前对象值的Hash码.
         GetType:获取当前实例的类型
         GetValueOrDefault:获取对象的值或默认值.
         ToString:以文本字符串的形式返回当前对象的值.
         运算符:Explicit:返回Nullable<T>的值.
         Implicit:创建Nullable<T>对象,然后给其赋值.
         属性:HasValue:当前对象是否有值.
         Value:当前对象的值.

(3)泛型:泛型的使用可以提高代码的重用率,保护类型安全和提高性能.
         优点:执行速度快,不需要装箱和拆箱,安全(线程安全)
(4)对象和集合初始化器:
     对象初始化器:由一些成员初始化器组成,包含在花括号中间,用逗号分隔.每个成员初始化器以对象的一个可访问的字段或属性的名字开始的.
         后面跟一个等号,之后是一个表达式,或一个对象,或一个集合初始化器.
     集合初始化器:集合初始化器由一系列包括在花括号之间的元素初始化器构成,元素初始化器之间使用逗号进行分隔,元素初始化器不能是赋值表达式.
(5)匿名类型:匿名类型一般出现在LINQ的select字句中,用来投影筛选出的数据.匿名类型创建的属性是只读的,不允许包含除了属性以外的成员,不能强制转换为object以外的类型或接口.
(6)扩展方法:必须是静态类的静态方法(是一种建立在非泛型,非嵌套的静态类中的特殊方法).是针对Landba而来的.
       特点:1.在某些情况下,父类不允许继承,通过扩展方法来实现非继承方法的添加.
        2.在继承关系中,我们通常继承一个对象(包括对象中扩展方法)之后对子类进行扩展写法.
        3.父类指向子类称为逆变,子类指向父类称为协变.
        4.扩展方法的名称如果和类型的成员方法重名,扩展方法永远不会被调用,扩展方法无法修改类型内部的源代码,所以在类型升级后,扩展方法可能会失效.

(7)匿名方法和Lamdba表达式:匿名方法就是方法中的方法,Lamdba表达式将匿名方法的语法进一步简化.
        Lamdba表达式的语法:(input parameters)=>expression  
       注释:()中表示输入参数,expression表示表达式,运算符"=>"读为goes to.
    
    

原文地址:https://www.cnblogs.com/ranfang/p/3517972.html