最近,粗略的读了《深入理解C#(第三版)》这本技术书,书中介绍了C#不同版本之间的不同以及新的功能。

  现在将部分摘录的内容贴在下面,以备查阅。

  C#语言特性:

  1.C#2.0

  C#2的主要特性是泛型、可空类型、匿名方法及其他有关委托的增强和迭代模块。此外还包含一些小特性:分部类型、静态类、包含不同访问修饰符的属性的取值方法和赋值方法、命名空间别称、pragma指令以及固定大小的缓冲器。

  2.C#3.0

  C#3为LINQ而生,尽管很多特性在其他地方也很有用。自动属性、数组和局部变量的隐式类型、对象和集合的初始化程序以及匿名类型,Lambda表达式和表达式书延伸了2.0中对委托所做的进展,扩展方法构成了查询表达式的最后一块拼图。分部方法仅出现在C#3中。

  3.C#4.0

  C#4中的特性旨在提高互操作性,但它不像C#3.0那样一门心思为了LINQ。同样,对一些小特性(命名实参、可选参数、更好的COM交互、泛型可变性)和动态类型这个大特性进行了相当清晰的划分。

  4.C#5.0

  C#5.0的异步特性和两个小特性(foreach变量捕获的变化和调用者信息特性)。尽管异步特性只引入了一个新的表达式,即async函数中的await,但却在很大程度上改变了执行模型。尽管C#团队做好了发布其他大型语言特性的准备,我还是认为暂缓发布是个明智之举。重点在于C#社区要谨慎面对async/await,而这需要时间。

  

  框架库的特性

  1..NET2.0

   2.0库所支持的CLR和语言最重要的特性是泛型和可空类型。尽管可空类型不需要进行过多的修改,但某些从.NET2.0以来一直存在的泛型集合及其反射API却需要相应地更新。

很多部分只进行了很小的修改,如支持压缩、在SQL Server单个链接上的多活动结果集,记忆很多静态的I/O辅助方法,如File.ReadAllText。公平地说,这些都不如对用户界面框架的改变重要。

ASP.NET新增了母版页、预编译功能记忆很多新的控件。Windows Forms增加了TableLayoutPanel及类似的类,从而在布局能力上有了一个飞跃;通过双缓冲、新的数据绑定模型,ClickOnce部署等,进一步增强了性能。.NET2.0引入的BackgroundWorker可以在多线程应用程序中轻松安全地更新UI,严格意义上它并不是Windows Forms的一部分,但在.NET3.0的WPF到来之前,Windows Forms一直都是它主要的应用场景。

  2..NET3.0

.NET3.0有点奇特,因为它是一个在CLR、语言和已有库方面都没有改变的“主”版本,而是由4个新的库组成。

  1. WPF是下一代用户界面框架;它是一场革命,而不仅仅是对Windows Forms的革新,尽管这两者可以共同存在。它跟Windows Forms是两种完全不同的模型,在本质上更倾向于组装式。Silverlight的用户界面基于WPF。
  2. WCF(Windows Communication Foundation)是构建面向服务的应用程序架构;它不会局限于单个协议,而是可以进行扩展,并且致力于统一现有的RPC类的通信管道,如远程处理。
  3. WF(Windows Workflow Foundation)是用于构建工作流应用程序的系统。
  4. Windows CardSpace是一个安全识别系统。

  这四个领域中,WPF和WCF已得到蓬勃发展,而WF和CardSpace似乎还未得到很好的推广。这并不是说后两种技术没有用,或以后不会变的很重要。

  3..NET3.5

.NET3.5中最大的新特性是C#3.0和VB9所支持的LINQ。它包括LINQ  to Objects、LINQ to SQL、LINQ to XML以及提供底层支持的表达式树。

其他方面也有一些重要的特性:在ASP.NET中可以更加简便地使用AJAX;WCF和WPF都在很大程度上得到了改进;引入了一个插件框架(system.AddIN);新增了各种加密算法,等等。对于那些对开发和事件相关的API感兴趣的开发者,我有必要向你介绍ReaderWriterLockSlim和急需的TimeZoneInfo、DateTimeOffset类型。如果你使用.NET3.5或更高的版本却仍旧到处依赖DateTime,你应该意识到除此之外还存在着更好的选择。

.NET3.5 SP1中最值得注意的库特性是Entity Framework及相关的ADO.NET技术同时其他技术也得到了微小的改进。同样重要的是,.NET3.5 SP1还引入了Client Profile—桌面.NET框架的缩减版,不包含很多用于服务器端开发的类库。这样就可以对只有客户端的应用程序进行小规模的部署。

  4..NET4.0

长期以来,.NET4.0库以各种不同的形式添加了不少内容。DLR是一个重要的部分,此外我们还在其他章节介绍了并行扩展。和前几版一样,用户界面也有了很大的改进,单位富客户端所做的改进主要集中在WPF,而不是Windows Forms。现有的核心API还进行了很多微调,以增加易用性,如String.Join现在接受IEnumerable<T>,而不再坚持只用字符串数组。这并不是什么重大改进,但如果它们能让每一位开发者轻松那么一点点,累积起来效果也是显著的。我们已经看到了现有的泛型接口和委托是如何具备协变性和逆变性的(如IEnumerable<T>变为IEnumerable<out>,Action<T>变为Action<in T>),不过还有一些新的类型值得探索。

System.Numeric是为数值计算新增的命名空间。它只包含BigInteger和Complex类型,未来可能还会添加BigDecimal。System命名空间也新增了一些类型,如用于延迟初始化值得Lazy<T>,以及与Pair<T1,T2>类功能相同的Tuple泛型类家族,它最多达8个类型参数。Tuple还支持结构化比较,由System.Collections命名空间中的IStructuralEquatable和IStructuralComparable接口表示。尽管第12章中介绍的全部Reactive Extensions

类都不属于.NET4,但其核心接口IObserver<T>和IObservable<T>则位于System命名空间。我之所以把这些具体项提出来,是因为尽管像托管可扩展框架(Managed Extensibility Framework,MEF)之类的新领域已经得到了广泛的关注,单还是容易忽视这些简单的类型。

  

转载于:https://www.cnblogs.com/tiantian515/p/7121065.html

深入理解C#第三版部分内容相关推荐

  1. 《深入理解JVM 第三版》 读书笔记

    2 Java内存区域与内存溢出异常 2.2 运行时数据区域 2.2.1程序计数器 程序计数器占用空间较小,可以看作当前 线程执行字节码的行号.因此是线程独立的. 如果执行的是native方法,则该计数 ...

  2. [第六章] 深入理解计算机系统第三版 家庭作业参考答案

    6.22 磁道数 d 与 r - x * r 成正比 设 d = k(r - x * r) = kr(1 - x) 总容量 c = 2πxk(r^2)(1 - x) = 2πk(r^2)(x - x^ ...

  3. [第五章] 深入理解计算机系统第三版 家庭作业参考答案

    5.13 A. 画图: 关键路径为第三幅图加粗部分 B. 下界为浮点加法的延迟界限,CPE 为 3.00 C. 整数加法的延迟界限,CPE 为 1.00 D. 关键路径上只有浮点加法 5.14 voi ...

  4. [第三章] 深入理解计算机系统第三版 家庭作业参考答案

    人非圣贤孰能无过,欢迎大家提问与纠错 3.58 long decode2(long x, long y, long z) {y -= z;x *= y;return ((y << 63) ...

  5. 深入理解计算机系统(第三版)

    300M+ 超级清楚 这本书我觉得很棒 最近在自学它 很基础的东西 百度网盘:https://pan.baidu.com/s/1rUHIzjvPZFbWiia-NUHnhQ passwd: 2gsp ...

  6. 【学习笔记】高性能计算之胡伟武《计算机体系结构基础》(第三版)

    自2022年3月1日起每天更新,3.3已更新至第三章 写在前面 1. 引言 1.1 计算机体系结构的研究内容 1.2 衡量计算机的指标 1.3 计算机体系结构的发展 1.4 体系结构设计的基本原则 2 ...

  7. 深入理解java虚拟机第一第二部分(周志明第三版)

    文章目录 深入理解java虚拟机(周志明第三版) 第一部分.Java的前世今生和未来展望 1.1.概述 1.2.java技术体系 1.3.Java发展史(只记录比较重要的) 1.4.Java虚拟机家族 ...

  8. 《深入理解Java虚拟机 - Jvm高级特性与最佳实践(第三版)》阅读笔记

    <深入理解Java虚拟机>阅读笔记 本repository为<深入理解Java虚拟机 - Jvm高级特性与最佳实践(第三版)>阅读笔记,因为第一章主要讲的是Java的发展历史, ...

  9. 《CLR via C#》 第三版的主要内容

    Jeffrey Richter 在他的博客中叙述了 CLR via C#第三版的主要内容,和改动.原本如下:(必要的地方加了翻译) Last week I submitted the reaming ...

最新文章

  1. 软件测试培训分享:软件测试的职业发展方向有哪些
  2. linux mysql jdk路径_教大家在如何Centos7系统中安装JDK、Tomcat、Mysql(文末附马哥linux全套视频教......
  3. Lucene.net常见功能实现知识汇总
  4. 工作79:获取对应中文
  5. 华三交换机配置access命令_H3C交换机配置命令大全
  6. 那些不开源的公司,后来怎么样了?
  7. openssl校验SSL证书public key是否配对
  8. QuickTime Player 如何开启倍速播放?
  9. win7重启mysql服务器_Win7系统下怎么重启iis服务?
  10. C++ / vs 如何生成自己的静态库(lib)文件
  11. java中如何用2位数表示日期_java – 如何解析2位数的年份日期?
  12. 计算机专业如何发sci,sci到底难发不难发,有什么玄妙招数?
  13. 星际争霸环境旧版本replay回放无法观看问题
  14. 毕业了~(2008-06-04 11:22)
  15. 打飞机小游戏c++窗口实现版
  16. 【个人学年总结】大一——“蛰伏”的一年
  17. 阿里云的DMZ区网络
  18. NYOJ 33 蛇形填数
  19. c语言一般用大写字母定义什么,c语言程序格式是什么
  20. No implementation found for void java接口不能跳转到实现类

热门文章

  1. phppage类封装分页功能_封装page分页类
  2. linux文件的权限模式,Linux文件权限和访问模式
  3. 测试linux写文件系统,linux下各主要文件系统的读写性能测试
  4. USB接口供电蓝牙彩色灯带控制器
  5. 全国大学智能车竞赛证书编号规范
  6. 基于级联FFT的广义互相关算法在声源定位中的应用
  7. 磁悬浮地球仪控制初步测试
  8. 射频宽带低噪放大器测试
  9. AI电磁组中的NN到底有什么优势?
  10. 室外声音信标可行性分析