• 隐式类型的本地变量和数组

    • 在与本地变量一起使用时,var 关键字指示编译器根据初始化语句右侧的表达式推断变量或数组元素的类型
  • 对象初始值设定项
    • 支持无需显式调用构造函数即可进行对象初始化
  • 集合初始值设定项
    • 支持使用初始化列表而不是对 Add 或其他方法的特定调用来初始化集合
  • 扩展方法
    • 使用静态方法扩展现有类,这些静态方法可以通过实例方法语法进行调用
    • 如果扩展方法与该类型中定义的方法具有相同的签名,则扩展方法永远不会被调用
    • 扩展方法被在命名空间级别放入范围中
    • 类库的实施者不应使用扩展方法来避免创建程序集的新版本
    • 如果您要向库中添加重要的新功能,并且您拥有源代码,则应该遵循标准 .NET Framework 程序集版本控制准则
    • 仅支持扩展方法,不支持扩展属性、事件和操作符
    • 建议,有限制有规范地使用扩展方法,潜在的版本控制问题。慎用
    • 可以为接口类型和委托类型定义扩展方法
    • ExtensionAttribute(编译时使用),存储在元数据中
  • 匿名类型
    • 允许动态创建可以添加到集合中并且可以使用 var 进行访问的未命名结构化类型
    • 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型
    • 类型名由编译器生成,并且不能在源代码级使用
    • 这些属性的类型由编译器推断
    • 创建公共只读属性,创建构造器,还会重写Object的Equals和GetHashCode以及ToString方法
    • 这么说来,匿名类型的对象很像值类型对不对?尤其时在不可变这个特性上...
  • Lambda 表达式
    • 支持带有可绑定到委托或表达式树的输入参数的内联表达式
  • LINQ查询关键字
  • 自动实现的属性
    • 支持使用简化的语法声明属性
  • 分部方法定义
    • 分部类型现在可以包含分部方法
    • 类的一个部分包含方法的签名。可以在同一部分或另一个部分中定义可选实现
    • 如果未提供该实现,则会在编译时移除方法以及对方法的所有调用
    • 如果调用了未实现的方法,将不会导致编译时错误或运行时错误
    • 分部方法使代码生成器创建的代码和开发人员创建的代码能够协同工作,而不会产生运行时开销
    • 分部方法声明必须以上下文关键字 partial 开头,并且方法必须返回 void
    • 分部方法可以有 ref 参数,但不能有 out 参数
    • 分部方法为隐式 private 方法,因此不能为 virtual 方法
    • 分部方法可以为泛型的。约束将放在定义分部方法声明上,但也可以选择重复放在实现声明上
    • 不能将委托转换为分部方法
    • 类或结构中定义,可以为静态分部方法,可以使用unsafe方法,attribute合并
    • 如果没有对应实现部分,不能创建委托来引用,因为运行时方法不存在。编译错误

【C#版本详情回顾】C#3.0主要功能列表的更多相关文章

  1. 【C#版本详情回顾】C#4.0主要功能列表

    诊断和性能 从 .NET Framework 4 开始,您可以获得每个应用程序域的处理器使用情况和内存使用情况估计值 通过托管承载 API.本机承载 API 以及 Windows 事件跟踪 (ETW) ...

  2. 【C#版本详情回顾】C#2.0主要功能列表

    泛型 优点:类型安全/重用代码/提升性能 应用:泛型接口.泛型类.泛型类型参数.泛型方法.泛型事件和泛型委托 命名空间:System.Collections.Generic 特性:泛型约束,defau ...

  3. 【转帖】sysbench使用教程(包含ubuntu自带的0.4版本、0.5版本和最新的1.0版本)

    sysbench使用教程(包含ubuntu自带的0.4版本.0.5版本和最新的1.0版本) 2018年08月10日 09:54:42 cxin917 阅读数 429   版权声明:本文为博主原创文章, ...

  4. [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向

    [.net 面向对象程序设计深入](4)MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...

  5. PyQt 5.2 发布,此版本完全支持Qtv5.2.0

    PyQt 5.2 发布,此版本完全支持Qtv5.2.0 :包括了新的 QtBluetooth,QtPositioning,QtMacExtras,QtWinExtras 和 Qt11Extras 模板 ...

  6. virtualbox谨记:win7上只有4.3.x的版本支持ubuntu14.04.3虚拟机安装Oracle Rac,其他的版本3.x和5.0.2(至2015-08-30)均不可以

    virtualbox谨记:win7上只有4.3.x的版本支持ubuntu14.04.3虚拟机安装Oracle Rac,其他的版本3.x和5.0.2(至2015-08-30)均不可以

  7. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  8. C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) C#各版本新特性 C#版本和.NET版本以及VS版本的对应关系

    C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) 2017年08月06日 11:53:13 阅读数:6705 历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有1 ...

  9. Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR tensorflow-1.13.1和1.14windows版本目前不支持CUDA10.0

    报错出现 Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR tensorflow-1.13.1和1.14windows版本目前不支持 ...

随机推荐

  1. 用android LinearLayout和RelativeLayout实现精确布局(转)

    先明确几个概念的区别: padding margin都是边距的含义,关键问题得明白是什么相对什么的边距. padding是控件的内容相对控件的边缘的边距. margin是控件边缘相对父控件的边距. a ...

  2. android在当前app该文件下创建一个文件夹

    /*********************************************************************  * Author  : Samson  * Date   ...

  3. 微信消息体签名及加解密功能详细解析以及.net实现

    原文:微信消息体签名及加解密功能详细解析以及.net实现 前言 微信消息体签名及加密功能已上线,明文传输确实存在安全风险,鉴于微信的用户范围使用之广泛,必定会成为众矢之的.所以大家还是尽快接入安全模式 ...

  4. 如何用Excel直接查询Oracle中的数据(转)

    将Oracle中查询的数据保存为Excel文件,通常使用的是PL/SQL Developer. 其实,Excel可直接写SQL语句查询Oracle中数据,在这里,用到ODBC驱动.详细步骤如下: 一. ...

  5. 【百度地图API】如何根据摩卡托坐标进行POI查询,和计算两点距离

    原文:[百度地图API]如何根据摩卡托坐标进行POI查询,和计算两点距离 摘要: 百度地图API有两种坐标系,一种是百度经纬度,一种是摩卡托坐标系.在本章你将学会: 1.如何相互转换这两种坐标: 2. ...

  6. input的width和padding-left同时存在时IE兼容问题

    总的来说,text-indent不影响元素的最终宽度但是有兼容性问题,padding-left在中国主流浏览器IE低版本下影响最终宽度,但在chrome和firefox下不影响宽度,但是可以通过CSS ...

  7. Lucene.Net简介和分词

    Lucene.net站内搜索—2.Lucene.Net简介和分词 2015-03-24 23:10 by 邹琼俊, 118 阅读, 1 评论, 收藏, 编辑 Lucene.Net简介 Lucene.N ...

  8. Linux MySQL自己环境搭建的笔记

    cd /usr/share/selinuxsetenforce 0tar -xvf MySQL-5.6.12-1.el6.x86_64.rpm-bundle.tarrpm -qa|grep -i my ...

  9. zoj 3822 Domination(dp)

    题目链接:zoj 3822 Domination 题目大意:给定一个N∗M的棋盘,每次任选一个位置放置一枚棋子,直到每行每列上都至少有一枚棋子,问放置棋子个数的期望. 解题思路:大白书上概率那一张有一 ...

  10. Mac OS下SVN的使用:服务的和客户端

    在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...