深入理解C#第三版部分内容

   最近,粗略的读了《深入理解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)之类的新领域已经得到了广泛的关注,单还是容易忽视这些简单的类型。

  

时间: 2024-11-07 14:35:23

深入理解C#第三版部分内容的相关文章

深入理解计算机系统(第三版) csapp 第六章部分答案

6.23 平均旋转时间: T avg rotation = 1/2*T max rotation = 1/2*(60s/15000RPM)*1000ms/s≈2ms 平均传送时间: T avg transfer = 1/RPM * (1/(平均扇区数/磁道))*60s/1min = 1/15000RPM * (1/800)*1000ms/s≈0.00008ms 总的预计访问时间: T access = Tave seek + T avg rotation + T avg transfer  ≈

大小端字节序的来历(摘自《深入理解计算机系统 第三版》)

术语“little endian(小端)”和“big endian(大端)”出自Jonathan Swift的<格列佛游记>(Gulliver's Trabels)一书,其中交战的两个派别无法就应该从哪一端(小端还是大端)打开一个半熟的鸡蛋打成一致.就像鸡蛋的问题一样,选择何种字节顺序没有技术上的理由,因此争论沦为关于社会政治论题的争论. 一下是Jonathan Swift在1726年关于大小端之争历史的描述: “......下面要告诉你的是,Lilliput和Blefuscu这两大强国在过去

【C# in depth 第三版】温故而知新(1) (转)

声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7192354.html 前言 关于这本书(<深入理解C# 第三版>)的详细情况以及好坏,自行搜索即可,我就不啰里啰嗦的,此文责在备份,意在记录一下第二次阅读当中发现原先囫囵吞枣之处,也为了记忆深刻吧.对这里还有一本<Clr via C# 第四版>也准备二次阅读,关于精度细读章节,知乎传送门( 赵姐夫的回答 ): https://www.zhihu.com/question/2728336

速读《深入理解计算机系统(第三版)》总结

速读<深入理解计算机系统(第三版)>总结 第一章 计算机系统漫游 读完第一章的心情实在难以述说,在此写下这一章自己的一点学习经历及感想 仔细读完了这本书的第一章的内容,之前零零散散的学过一些计算机系统知识,也接触过编程,但是对于这两者并没有什么太多的思考,它们底层是什么联系也不太了解.当我读完这一章的内容时,我的内心是非常激动的,解除了很多之前学习中所残留下来的困惑,虽说是残留,但十分致命,令我一直处于一知半解的状态,我第一次的深刻觉得计算机是一个如此紧密的工具,我跟着作者的思路,从给出计算机

读书笔记《深入理解计算机系统》(第三版) 概述

<深入理解计算机系统>第三版刚出来不到一周,便买下了这本书:之所以阅读本书,一方面源于网友推荐以及豆瓣不错的评分.评价:另一方面是针对本人非科班出身,计算机系统相关的知识相对比较薄弱,很多情况下此类知识需要工作之外的时间自学.补涨此类知识,而该书从程序员的角度进行阐述.展示了计算机系统的各个层面的知识以及其影响程序的正确性.性能.实用性,更容易引起某些上层和下层的知识接轨理解,以期望可以融汇各方面的知识. 明白程序的运作过程,编写更好的软件程序,对底层过程了解以完善自己知识体系和提高信心.接下

《深入理解计算机系统(第三版)》第二章 信息的表示和处理

<深入理解计算机系统(第三版)>第二章 信息的表示和处理 ??计算机本身是由处理器和存储器子通过系统组成.在核心部分,我们需要方法来表示基本数据类型,比如整数和实数运算的近似值.然后,我们考虑机器级指令如何操作这样的数据,以及编译器又如何将C程序翻译成这样的指令.接下来,研究几种实现处理器的方法,帮助我们更好的了解硬件资源如何被用来执行指令.理解了编译器和机器级代码,我们就能了解如何通过编写C程序以及编译它们来最大化程序的性能.本章主要使我了解了如何表示和执行应用程序,通过一些技巧,来写出安全

关于阮一峰老师es6(第三版)中管道机制代码的理解浅析

最近正在学习阮一峰老师的es6(第三版)教材,在学到第七章<函数的扩展>中的箭头函数嵌套时,文中提到了一个关于“管道机制”的示例,文中源代码如下: //es6(第三版)教材中的管道机制源代码: const pipeline = (...funcs) => val => funcs.reduce((a, b) => b(a), val); const plus1 = a => a + 1; const mult2 = a => a * 2; const addThe

JavaScript高级程序设计(第三版)学习笔记20、21、23章

第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值:字符串,数值,布尔值,null,不支持js特殊值:undefined 对象:一组无序的键值对 数组:一组有序的值的列表 不支持变量,函数或对象实例 注:JSON的字符串必须使用双引号,这是与JavaScript字符串最大的区别 对象 { "name":"Nicholas"

【转】apue《UNIX环境高级编程第三版》第一章答案详解

原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此,我要感谢网易的一个工程师朋友和室友,没有他们,我不会开始真正的学习这本书,希望大家以后开始慢慢进步.废话少说,直接上课后习题了. UNIX高级编程第一章习题答案: 1.1在系统上验证,除根目录外,目录l和l l是不同的. 答:这个验证有很多方法可使用命令ls .cd.vim等,目录.指向当前目录,目录..指