• 自动属性.

    • 之前定义属性的步骤: 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表达式.
    • 内存中的分层次的数据表示,每一个节点都是查询的一部分.以数据结构来描述执行代码.

C# 3.0的新特性的更多相关文章

  1. php5.3到php7.0.x新特性介绍

    <?php /*php5.3*/ echo '<hr>'; const MYTT = 'aaa'; #print_r(get_defined_constants()); /* 5.4 ...

  2. paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较

    paip.php 5.0 5.3 5.4  5.5 -6.0的新特性总结与比较 PHP5的新特性 2 · 对象的参照过渡是默认的(default) 3 · 引入访问属性的限制 3 · 引入访问方法的限 ...

  3. NodeJS 框架 Express 从 3.0升级至4.0的新特性

    NodeJS 框架 Express 从 3.0升级至4.0的新特性 [原文地址:√https://scotch.io/bar-talk/expressjs-4-0-new-features-and-u ...

  4. 相比于python2.6,python3.0的新特性。

    这篇文章主要介绍了相比于python2.6,python3.0的新特性.更详细的介绍请参见python3.0的文档. Common Stumbling Blocks 本段简单的列出容易使人出错的变动. ...

  5. MySQL 8.0 InnoDB新特性

    MySQL 8.0 InnoDB新特性 1.数据字典全部采用InnoDB引擎存储,支持DDL原子性.crash safe,metadata管理更完善 2.快速在线加新列(腾讯互娱DBA团队贡献) 3. ...

  6. Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性

    Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性 1.1. Jquery1.12  jQuery 2.2 和 1.12 新版本发布 - OPEN资讯.h ...

  7. [PHP] 从PHP 5.6.x 移植到 PHP 7.0.x新特性

    从PHP 5.6.x 移植到 PHP 7.0.x 新特性: 1.标量类型声明 字符串(string), 整数 (int), 浮点数 (float), 布尔值 (bool),callable,array ...

  8. servlet3.0 的新特性之二注解代替了web.xml配置文件

    servlet3.0 的新特性: 注解代替了 web.xml 文件 支持了对异步的处理 对上传文件的支持 1.注解代替了配置文件 1.删除了web.xml 文件 2. 在Servlet类上添加@Web ...

  9. C# 6.0/7.0 的新特性

    转眼C#语言都已经迭代到7.0版本了,很多小伙伴都已经把C# 7.0 的新特性应用到代码中了,想想自己连6.0的新特性都还很少使用,今天特意搜集了一下6.0和7.0的一些新特性,记录一下,方便查阅. ...

  10. C#6.0的新特性之内插字符串

    https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/interpolated-strings C# 6 ...

随机推荐

  1. hdu2853 Assignment 完美匹配 多校联赛的好题

    PS:好题.不看题解绝对AC不了. 题解来源: http://blog.csdn.net/niushuai666/article/details/7176290 http://www.cnblogs. ...

  2. 使用Word 2010群发邮件

    1.建立数据库,这里我使用了excel 字段:电子邮件地址,名字 填写需要发送的数据 2.新建word文档,这里我使用了word2010 点击工具栏邮件 开始邮件合并,电子邮件 选择收件人,使用现有列 ...

  3. 图解HTTP——阅读笔记

    基础部分 第1章 了解Web及网络基础 重点了解HTTP协议在网络中的作用,扮演了什么角色,以及网络传输中相关的一些角色. 3项重要的web构建技术:HTML,URL,HTTP HTTP协议位于应用层 ...

  4. SpringMVC(二)@RequestMapping

    学习@RequestMapping注解,参考Spring API 1.@RequestMapping可以修饰在类类型和方法上      ①.修饰在类定义上:   提供初步的URL映射,相对于web应用 ...

  5. MongoDB 学习笔记(二):shell中执行增删查改

    一.查 1.查询集合中所有文档:db.集合名.find(). 2.查询集合中第一个文档:db.集合名.findOne(). 3.指定查询条件:第一个参数就是指定查询条件 查询全部文档:db.集合名.f ...

  6. linux系统时间与网络时间不同步

    在解决问题之前,我们首先来了解下面几个知识点: 1. date命令: #date 显示系统时间 2.hwclock命令   (即hardwareclock系统硬件时间) #hwclock 显示硬件时间 ...

  7. linux--ubuntu的下载以及VMware Tool的安装

    1. Ubuntu的下载:http://cn.ubuntu.com/download/ 2. VMware Tool的安装: 第一步:在主机上,从 Workstation Pro 菜单栏中选择虚拟机 ...

  8. 莫烦大大TensorFlow学习笔记(9)----可视化

      一.Matplotlib[结果可视化] #import os #os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf i ...

  9. Linux内核crash/Oops异常定位分析方法

    在内核开发的过程中,经常会碰到内核崩溃,比如空指针异常,内存访问越界.通常我们只能靠崩溃之后打印出的异常调用栈信息来定位crash的位置和原因.总结下分析的方法和步骤. 通常oops发生之后,会在串口 ...

  10. Project Euler 34 Digit factorials

    题意:判断一个数 N 的各个位数阶乘之和是否为其本身,找出所有符合要求的数然后求和 思路:此题思路跟 30 题相同,找到枚举上界 10 ^ n <= 9! × n ,符合要求的 n < 6 ...