您的位置:首页 > 编程语言 > C#

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

2014-01-13 19:53 288 查看
.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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: