zoukankan      html  css  js  c++  java
  • C# 3.0的新特性

    • 自动属性.
      • 之前定义属性的步骤: private filed + public property.
      • 现在的形式:int id{get;set;}.
      • 可以分别设置get/set的保护级别(protected/public/private/internal).
      • 系统自动生成一个private的字段,并暴露响应的get/set访问器.
      • 对于Property内定义操作的限定
        • 应该能够立即返回.不能把Timer的操作定义在其内.
    • 匿名类型var
      • var声明仅限于局部变量,不能用于字段上.
      • 编译器根据初始化语句来自动推测变量的类型.一旦类型确定后,不能改变它.
      • 初始化语句必须为表达式,不可为空.且编译时就能够完成类型推断.
    • 匿名类型
      • 普通的Type=Data+Operation组成.
      • 对于一个只需要Data的类型.使用InLine的方式创建一个匿名类型,其只含有Data成员.
      • 编译器会自动创建匿名类型的Class.并且在同一Assembly内,相同数据结构的匿名类型共享同一Class.
      • 匿名类型无法作为方法的参数.
      • 自动生成的Class继承自Object.其成员是由编译器推断出的get/set属性.
      • 数组的形式new[]{,,,,,}.
      • 在Linq中,编译器就使用了匿名类型来对查询结果的数据进行保存.
    • 对象/集合初始化器
      • 对象初始化器的过程:调用Class的构造器创建一个临时对象,然后根据{}内的赋值语句对临时对象的Field/Property进行赋值.然后将临时对象返回.
      • 集合初始化器.将集合对象的创建和对元素的初始化合一.
    • 扩展方法
      • 之前需要扩展CLR类型时.要么创建Helper类,要么继承该类型.
      • 类似于JS中的prototype.实现了对duck typing的支持.
      • 扩展方法是可以通过实例方法语法调用的静态方法.仅可以声明在静态类中.
      • 其本质是将实例方法调用在编译期改变为静态类中的静态方法调用.
      • 作用域是namespace.
      • 在IL Code级别,扩展方法被自动加上了[ExtensionMethod]特性.编译器在对方法调用进行编译时,首先查找Type Method.如果没有再查找ExtensionMethod.
      • 在Linq中,System.query就是对IEnumable<T>增加了select/foreach等扩展方法.
    • Lamada表达式
      • 实质是匿名Delegate.命名Delegate,匿名Delegate,Lamada表达式3者没有区别.
      • 编译器为它生成一个Named Delegate,和一个指向它的Method.然后这两者作为使用该lamada表达式的Class内的Static method.
      • lamada表达式L可以转换为委托类型D,只要满足两者的参数签名完全一致.
      • 可以把一个方法作为另一方法的参数.在linq中where(p=>{}).
    • Lamada表达式树
      • 像处理数据(读取,修改)一样了处理lamada表达式.
      • 内存中的分层次的数据表示,每一个节点都是查询的一部分.以数据结构来描述执行代码.
  • 相关阅读:
    博客园电子期刊2009年6月刊发布
    今晚22:30~23:00博客程序更新
    博客园上海俱乐部活动通知(2009613)
    【意见征集补充】09'博客园T恤设计
    C# WinForm webBrowser 内嵌网页的按钮的OnClientClick事件的return false 在webBrowser中绑定onclick事件后 失效 的变通解决办法
    [转]VS2008中开发智能设备程序的一些总结收藏1
    [转]C#访问SQLite数据库
    [转]VS C# 怎么调试调试服务?
    [转]弹出窗口刷新它的父页面后。出现不重新发送信息,则无法刷新网页
    [转]外部css文件中的 BACKGROUNDIMAGE: url(..\image.gif)指定的背景图像无法显示,谁有好主意?
  • 原文地址:https://www.cnblogs.com/robyn/p/3785418.html
Copyright © 2011-2022 走看看