• 诊断和性能

    • 从 .NET Framework 4 开始,您可以获得每个应用程序域的处理器使用情况和内存使用情况估计值
    • 通过托管承载 API、本机承载 API 以及 Windows 事件跟踪 (ETW),可提供应用程序域资源监控
    • 参见新增的 AppDomain.MonitoringIsEnabled 属性
  • 垃圾回收
    • .NET Framework 4 提供背景垃圾回收替代了以前版本中的并发垃圾回收并提高了性能
  • 代码协定
    • 代码协定允许您指定方法或类型的签名没有单独表示的协定信息
    • 以前置条件、后置条件和对象固定的形式来表示编码假设
    • 新的 System.Diagnostics.Contracts 命名空间
    • 这些协定利用运行时检查改进了测试,启用了静态协定验证并支持文档生成
    • 更多信息,请参见代码协定
  • 动态语言运行时
    • 动态语言运行时 (DLR) 是一种新运行时环境,它将一组适用于动态语言的服务添加到 CLR
    • 借助于 DLR,可以更轻松地开发要在 .NET Framework 上运行的动态语言
    • System.Dynamic 命名空间
    • 参见动态语言运行时概述
  • 协变和逆变
  • BigInteger和复数
    • 新的 System.Numerics.BigInteger 结构是一个任意精度 Integer 数据类型,它支持所有标准整数运算
    • 可以通过任何 .NET Framework 语言使用该结构
    • 一些新 .NET Framework 语言(例如 F# 和 IronPython)对此结构具有内置支持
  • 元组
    • 包含结构化数据的元组对象的 System.Tuple
    • 提供了泛型元组类以支持具有 1 到 8 个组件的元组
    • 提供了一个具有 7 个类型参数和任何元组类型的第 8 个参数的泛型元组类
  • 文件系统枚举改进
    • 新的文件枚举方法可以提高访问大文件目录或循环访问大文件中的行的应用程序的性能。
  • 内存映射文件
    • 可以使用内存映射文件编辑非常大的文件和创建共享内存以进行进程间通信
  • 其他新增语言特性
  • Managed Extensibility Framework
  • 并行计算
    • .NET Framework 4 引入了用于编写多线程和异步代码的新编程模型,极大地简化了应用程序和库开发人员的工作
    • 通过固有方法编写高效、细化且可伸缩的并行代码,而不必直接处理线程或线程池
    • 新的 System.Threading.Tasks 命名空间和其他相关类型支持此新模型
    • 并行 LINQ (PLINQ) 是 LINQ to Objects 的并行实现,能够通过声明性语法实现类似功能
    • 详见:.NET Framework 中的并行编程
  • 可选参数和命名参数
    • 应用场景:主要考虑与COM组件交互互操作的场景
    • 可选参数属性 OptionalAttribute 命名参数属性 DefaultParameterValueAttribute
  • 延迟初始化
    • 对象的创建将会延迟至第一次使用该对象时
    • 延迟初始化主要用于提高性能,避免浪费计算,并减少程序内存要求
    • Lazy<T> 及其相关的类型还支持线程安全,并提供一致的异常传播策略
    • System.Lazy<T> 一个包装类,可为任意类库或用户定义的类型提供延迟初始化语义
    • System.Threading.ThreadLocal<T>,类似于 Lazy<T>,只不过它基于本地线程提供延迟初始化语义。每个线程都可以访问自己的唯一值
    • System.Threading.LazyInitializer<T>,为对象的延迟初始化提供高级的 static方法,此方法不需要类开销
    • Lazy<T>,isThreadSafe和LazyThreadSafetyMode(线程安全模式)参数,对象的线程安全
    • 使用任何采用初始化方法(valueFactory 参数)的 System.Lazy<T> 构造函数时,会启用异常缓存
    • 如果您使用不指定初始化方法的 System.Lazy<T> 构造函数,则不会缓存 T 默认构造函数引发的异常
    • 使用 PublicationOnly,通过争用初始化,在这种情况下,不缓存异常,访问 Value 属性的尝试可以继续下去,直到初始化成功
    • 以并行方式循环访问数据源时,可以使用具有对线程本地数据的内置支持的重载
    • 如何:编写具有线程局部变量的 Parallel.ForEach 循环
  • 并发集合支持
  • 新的同步基元
  • 聚合异常
    • System.AggregateException 类型可用于捕获在不同线程上同时引发的多个异常,并将它们作为单个异常返回到联接线程

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

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

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

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

    隐式类型的本地变量和数组 在与本地变量一起使用时,var 关键字指示编译器根据初始化语句右侧的表达式推断变量或数组元素的类型 对象初始值设定项 支持无需显式调用构造函数即可进行对象初始化 集合初始值设 ...

  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. SharePoint 2013 禁用搜索服务

    原文:SharePoint 2013 禁用搜索服务 前言,在SharePoint2013中,对于硬件需求的提升,让我们虚机里安装总是一筹莫展,尤其开启了搜索服务以后,对于内存的消耗就更加严重,尤其对于 ...

  2. 使用javascript实现html文字不可选

    如何使用js让html该文本是不可选定它?首先想到的是用css选择实现,如下面: -webkit-touch-callout: none; -webkit-user-select: none; -kh ...

  3. 《CS:APP》 chapter 8 Exceptional Control Flow 注意事项

    Exceptional Control Flow The program counter assumes a sequence of values                            ...

  4. centos编译内核:no space left on device 解

    1.问题:在下面的根文件夹中的原始源代码 编译出现 no space left on device 利用df -h 命令查看 根文件夹空间占用完成 2.将源代码改在其它空间非常足的地方编译 在make ...

  5. 【android】ImageView的src和background以及两者之间的神奇的差异

    一.ImageView中XML属性src和background的差别: background会依据ImageView组件给定的长宽进行拉伸.而src就存放的是原图的大小,不会进行拉伸.src是图片内容 ...

  6. Win7安装和配置Tigase 5.2server

    Win7安装和配置Tigaseserver 笔者:chszs,转载注明. 博客首页:http://blog.csdn.net/chszs 1.下载tigase-server-5.2.0-b3447.e ...

  7. DynamicReports

    try { response.setCharacterEncoding("UTF-8"); response.setHeader("Content-disposition ...

  8. 物理引擎Havok教程(一)搭建开发环境

    物理引擎Havok教程(一)搭建开发环境 网上关于Havok的教程实在不多,并且Havok学习起来还是有一定难度的,所以这里写了一个系列教程,希望可以帮到读者.这是第一期. 一.Havok物理引擎简单 ...

  9. CSharp设计模式读书笔记(18):中介者模式(学习难度:★★★☆☆,使用频率:★★☆☆☆)

    中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,中介者模式又称为 ...

  10. 类别sort使用排序

    2129: 船上的第二次测试第三个问题 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 243  Solved: 74 [Submit][id=2129 ...