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表达式.
- 内存中的分层次的数据表示,每一个节点都是查询的一部分.以数据结构来描述执行代码.
C# 3.0的新特性的更多相关文章
- php5.3到php7.0.x新特性介绍
<?php /*php5.3*/ echo '<hr>'; const MYTT = 'aaa'; #print_r(get_defined_constants()); /* 5.4 ...
- 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 · 引入访问方法的限 ...
- NodeJS 框架 Express 从 3.0升级至4.0的新特性
NodeJS 框架 Express 从 3.0升级至4.0的新特性 [原文地址:√https://scotch.io/bar-talk/expressjs-4-0-new-features-and-u ...
- 相比于python2.6,python3.0的新特性。
这篇文章主要介绍了相比于python2.6,python3.0的新特性.更详细的介绍请参见python3.0的文档. Common Stumbling Blocks 本段简单的列出容易使人出错的变动. ...
- MySQL 8.0 InnoDB新特性
MySQL 8.0 InnoDB新特性 1.数据字典全部采用InnoDB引擎存储,支持DDL原子性.crash safe,metadata管理更完善 2.快速在线加新列(腾讯互娱DBA团队贡献) 3. ...
- 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 ...
- [PHP] 从PHP 5.6.x 移植到 PHP 7.0.x新特性
从PHP 5.6.x 移植到 PHP 7.0.x 新特性: 1.标量类型声明 字符串(string), 整数 (int), 浮点数 (float), 布尔值 (bool),callable,array ...
- servlet3.0 的新特性之二注解代替了web.xml配置文件
servlet3.0 的新特性: 注解代替了 web.xml 文件 支持了对异步的处理 对上传文件的支持 1.注解代替了配置文件 1.删除了web.xml 文件 2. 在Servlet类上添加@Web ...
- C# 6.0/7.0 的新特性
转眼C#语言都已经迭代到7.0版本了,很多小伙伴都已经把C# 7.0 的新特性应用到代码中了,想想自己连6.0的新特性都还很少使用,今天特意搜集了一下6.0和7.0的一些新特性,记录一下,方便查阅. ...
- C#6.0的新特性之内插字符串
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/interpolated-strings C# 6 ...
随机推荐
- RabbitMQ学习之队列监控
对于RabbitMQ的监控,除了服务器基本信息(硬盘.CPU.内存.IO等)以及MQ的进程和端口,我们也可以通过请求url访问管理API监控其集群和队列的情况.在Javaapi 3.6.0以后,cha ...
- js代码 注释 test
<script type="text/javascript"> var obj = { tyep: 'GET', url: '/Backstage/Home/Menu' ...
- 软件神器系列——photozoom图片像无损清晰放大软件砸金蛋活动开始啦!
不管是刚进入社会的小白,还是混迹多年的油条,是不是发现了最近的工作越来越难做了? 推广文章.产品手册.营销方案.培训计划.工作报告乃至于PPT,都不是以前用文字数据可以交工的了,现在都讲究“图文并茂” ...
- 【转】Oracle基础结构认知—进程及逻辑结构 礼记八目 2017-12-17 19:33:21
原文地址:https://www.toutiao.com/i6500477672349499917/ 一. Process Structure进程结构 Oracle有两种类型的进程: 服务器进程和后台 ...
- Kaggle竞赛顶尖选手经验汇总
What is your first plan of action when working on a new competition? 理解竞赛,数据,评价标准. 建立交叉验证集. 制定.更新计划. ...
- Zabbix4.0 Web管理界面中文乱码解决方法(转)
Zabbix安装好之后,监控图形页面出现字符集乱码 解决方法:1.复制本地电脑C:\Windows\Fonts\simkai.ttf(楷体)上传到zabbix服务器网站目录的fonts目录下 2.za ...
- 中国电信线CTF线下选拨writeup
[盟军密码|30分] 二战时盟军截获德军一段密码,密文为:0000011000000000101010110111000011000111100011110001001100111000111001( ...
- Centos文件查看命令字符
文件(夹)查看类命令 ls--显示指定目录下内容 说明:ls 显示结果以不同的颜色来区分文件类别.蓝色代表目录,灰色代表普通文件,绿色代表可执行文件,红色代表压缩文件,浅蓝色代表链接文件. -a--- ...
- 用chrony代替ntpd时间同步服务器
Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确. 它由两个程序组成:chronyd和chronyc. chronyd是一个后台运行的守护进程,用于调整内核 ...
- Mybatis-Plus的BaseMapper的使用
Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件, 减少你的开发周期优化动态维护 XML 实体字段. 下面简单举例,调用Base ...