
《Microsoft .NET 框架程序设计(修订版) 》学习笔记
xufei96
SDET .net C#
展开
-
《Microsoft .NET框架程序设计(修订版)》前言
Jeff的书 号称.NET领域当之无愧的圣经教本,雄踞亚马逊销售榜榜首14个月 《前沿》不管微软是否参与其中,充满Web服务的全新世界都终将到来。微软整个.NET平台创新的目的就是帮助开发人员来创建和访问这些服务。.NET框架包含两个部分:通用语言运行时(CLR)和.Net框架类库(FCL)。.NET框架的优势:1. 一致的编程模型 在.NET框架下,所有的应用程序服务都原创 2010-03-16 15:38:00 · 395 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第十六章
第16章 数组16.1 初始化数组元素 //数组初始化器 int[] i = { 1, 2, 3 }; int[][] j = { new int[] { 1, 2 }, new int[] { 3, 5 } }; int[,] k = { { 1, 2, 3 }, { 2, 3, 4 } };1原创 2012-11-28 15:26:28 · 239 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第十七章
第17章 委托17.1 初识委托using System;namespace EnumApp{ static class Program { static void Main() { MyDelegate[] ds = { new MyDelegate(Print1), new MyDelegate(Print2原创 2012-11-29 15:18:29 · 314 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第十八章
第18章 定制attribute18.1 使用定制attribute将DLLImport attribute应用于方法,告诉CLR该方法的实现位于指定DLL的非托管代码中。将Serializable attribute应用于类型,告诉序列化格式化器(serialization formatter)一个实例的字段可以序列化和反序列化。将AssemblyVersion attribut原创 2012-11-29 16:44:21 · 351 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第十九章
第19章 可空值类型由于Nullable本身是值类型,所以它的实例仍然是“轻量级”的。也就是说,实例仍然可以在堆栈上,而且一个实例的大小就是原始值类型的大小及上一个boolean字段的大小。19.1 C#对可空值类型的支持19.2 C#的空接合操作符??操作符,它要获取两个操作数。假如左边的操作数不为null,就返回这个操作数的值。如果左边的操作数为null就返回右边的操作数的值。原创 2012-11-29 17:23:36 · 320 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第二十章
第20章 异常和状态管理20.8 指导原则和最佳实践编译器将你写的代码放到try块内部,并自动将清理代码放到finally块中。使用lock语句时,锁会在finally块中释放。使用using语句时,会在finally块中调用对象的dispose方法。使用foreach语句时,会在finally块中调用IEnumerator对象的Dispose方法。定义析构器方法时,会在f原创 2012-11-30 13:49:16 · 250 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第二十一章(1)
第21章 自动内存管理(垃圾回收)21.1 理解垃圾回收平台的基本工作原理访问一个资源所需的具体步骤:1)分配内存, 调用IL指令newobj,为代表资源的类型分配内存。在C#中使用new操作符,编译器就会自动生成该指令。2)初始化内存,设置资源的初始状态,使资源可用。3)使用资源,访问类型的成员来使用资源。4)摧毁资源的状态以进行清理。5)释放内存。CLR要求所有原创 2012-11-30 17:21:29 · 343 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第十二章
第12章 泛型CLR允许创建泛型引用类型和泛型值类型,但不允许创建泛型枚举类型。泛型的主要好处是减少代码量,减少类型转换次数,提高代码性能。12.3 泛型基础结构所有引用类型的实参或变量实际只是指向堆上的对象的指针,在32位windows系统上,全部为32位指针;在64位windows系统上,全部为64位指针。12.6 委托和接口的逆变和协变泛型类型实参泛型类型中只有委托跟原创 2012-11-19 14:53:02 · 394 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第二十一章(2)
第21章 自动内存管理(垃圾回收)21.8 Dispose 模式:强制对象清理资源 Finalize的调用时间是不能保证的。21.10 C#的using语句在using语句中,我们初始化一个对象,并将它的引用保存到一个变量中。然后在using语句的大括号内访问该变量。编译这段代码时,编译器自动生成一个try块和一个finally块。在finally块中,编译器会生成代码将变量转型成原创 2012-12-03 13:26:02 · 326 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第二十四章(1)
第24章运行时序列化序列化(serialization)是将一个对象或者对象图转换成一个字节流的过程。反序列化(deserialization)是将一个字节流转换回对象图的过程。应用程序的状态(对象图)可轻松保存到一个磁盘文件或数据库中,并在应用程序的下次运行时恢复。ASP.NET就是利用序列化和反序列化来保存和恢复会话状态的。一组对象可轻松通过网络发送给另一台机器上运行的过程。Mic原创 2012-12-04 17:12:59 · 310 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第二十四章(2)
XML序列化与反序列化 List array = new List() { 123, 123, 534, 5, 7567, 234 }; //序列化 XmlSerializer xs = new XmlSerializer(typeof(List)); StreamWriter sw = new StreamWriter("my原创 2012-12-05 13:39:46 · 373 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第二十三章
第23章 程序集加载和反射23.1 程序集加载CLR使用System.Reflection.Assembly类的静态方法Load来尝试加载程序集。Load导致CLR向程序集应用一个版本绑定重定向策略,并在GAC(全局程序集缓存)中查找程序集。如果没找到,就接着去应用程序的基目录、私有路径子目录和codebase位置查找。原创 2012-12-04 14:49:44 · 272 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第十五章
第15章 枚举类型和位标记15.1 枚举类型枚举类型使程序容易编写、阅读和维护枚举类型是强类型的。每个枚举类型都直接从System.Enum派生,后者从System.ValueType派生,而System.ValueType又从System.Object派生。枚举是值类型。可表示成未装箱和已装箱形式。可利用C#的“扩展方法”功能模拟向枚举类型添加方法。枚举类型定义的符号是常原创 2012-11-28 14:10:48 · 317 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第十四章
第十四章 字符,字符串和文本处理14.1 字符在.Net Framework中,字符总是表示成16位Unicode代码值,这简化了国际化应用程序的开发。每个字符都表示成System.Char结构的一个实例。14.2 System.String类型C#中不能使用new操作符从一个文本常量字符串构造一个string对象。14.2.2 字符串是不可变的String对象最重要的一个原创 2012-11-26 16:41:04 · 258 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第十一章
第11章 事件11.1 设计要公开事件的类型11.1.1 第一步:定义类型来容纳所有需要发送给事件通知接收者的附加信息定义一个没有附加数据需要传递的事件时,可直接使用EventArg.Empty。 internal class NewMailEventArgs : EventArgs { public string m_from { get; private原创 2012-11-05 16:41:36 · 394 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第一章
第一章 Microsoft .NET框架开发平台体系结构 Ø 1.1将源代码编译为托管模块在非托管C/C++中,我们可以对系统有着相当底层的控制,我们可以以自己喜欢的方式来管理内存。不管使用的是何种编译器,最后生成的结果都是一个托管模块(Managed Module)。托管模块是一个需要CLR才能执行的编准可移植可执行文件(portable executable,简称PE)文原创 2010-03-16 17:54:00 · 433 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第二章
第二章 生成,打包,部署及管理应用程序与类型 Ø 2.1 .NET框架部署目标部署目标:1. 解决“DLL hell”问题 DLL hell是指当安装新的应用程序时,却发现它损坏了一个现有的应用程序。2. 组件不需要像COM那样在注册表中进行注册,应用程序不再需要快捷链接(还未实现)3. 安全方面.NET框架包含了一个称作代码访问安全(code access se原创 2010-03-16 22:08:00 · 335 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第三章
第三章 共享程序集 Ø 3.1 两种程序集,两种部署方式.NET框架支持两种程序集:弱命名程序集(weakly named assembly)和强命名程序集(strongly named assembly),二者之间的真正区别在于,强命名程序集有一个发布者的公钥/私钥对签名,其中的公钥/私钥对唯一地标识了程序集的发布者。利用公钥/私钥对,我们可以对程序集进行唯一的标识,实施安全策略原创 2010-03-17 22:59:00 · 412 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第四章
第四章 类型基础 Ø 4.1 所有类型的基类型: System.Object每个类型对会继承自System.Object。使用new运算符创建对象时所执行的工作:1. 分配内存 从托管堆中分配指定类型所需数量的字节来作为存储其对象的内存空间。2. 初始化对象的附加成员,指向类型方法表的指针和SyncBlockIndex3. 传入new操作符中指定的参数,调用类型原创 2010-03-18 20:48:00 · 303 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第六章
第六章 通用对象操作 Ø 6.1 对象的等值性与唯一性Equals方法采取的策略:如果进行比较的两个引用指向的是同一个对象,方法将返回true;否则在任何其他情况下,方法都将返回false。当实现Equals方法时,必须遵循4条规则:1. Equals方法必须是自反的2. Equals方法必须是对称的3. Equals方法必须是可传递的4. Equals方原创 2010-03-18 23:56:00 · 257 阅读 · 0 评论 -
C#事件的发布机制
<br />event demo:<br /> <br />using System;<br /> <br />namespace EventDemoConsoleApplication<br />{<br /> classProgram<br /> {<br /> staticvoid Main(string[] args)<br /> {<br /> Orange orange=newOrange();<br /> Ap原创 2010-08-11 22:55:00 · 180 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第五章
第五章 基元类型,引用类型与值类型 Ø 5.1 基元类型编译器直接支持的数据类型成为基元类型。基元类型和.NET框架类库中的类型有直接的映射关系。如果两个类型之间的转换是“安全”的,那么C#允许在它们之间进行隐式转换,这里安全的意思是转换过程中不会造成数据损失。如果转型存在潜在的“不安全”,C#将要求显示转型。对于值类型,“不安全”的转换意味着我们可能会因此丢失精度或者数量级。原创 2010-03-18 22:30:00 · 330 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第七章
第七章类型成员及其访问限定 Ø 7.1类型成员常数总是和类型而非它们的实例相关联,它们总是静态的。不管使用何种编程语言,编译器总是先对我们的源代码进行处理,然后为每一种成员产生相关的元数据,并为其中的方法成员产生IL代码。元数据的格式和编程语言之间无任何关系,这使得CLR成为名副其实的“通用语言运行时”。元数据信息对于所有语言都是通用的,这使得一门编程语言可以无缝地访问原创 2010-03-19 20:27:00 · 255 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第八章
第八章常数与字段 Ø 8.1常数常数总被认为是类型的一部分。定义常量符号时,它的值必须能在编译时确定,确定之后,编译器将常量的值保存到程序集的元数据中。这意味这只能为程序集所认定的基元类型定义常量。运行时不需要为常量分配任何内存。 Ø 8.2字段字段是以动态内存的形式存储的,因此只能在运行时刻获取它们的值。对于类型字段,用于容纳字段数据的原创 2010-03-19 21:08:00 · 243 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第九章
第九章方法Ø 9.1实例构造器如果希望类外的代码创建该类的实例,可以将构造器的访问限制设为私有方式。在创建一个引用类型的实例时,系统会执行以下三个步骤:首先为该实例分配内存,然后初始化对象的附加方法(即方法指针和一个SyncBlockIndex),最后调用类型的实例构造器设置对象的初始状态。当构造一个引用类型实例时,在调用其实例构造函数之前,系统为该对象分配的内存总是首先被设为原创 2010-03-21 19:13:00 · 266 阅读 · 0 评论 -
《Microsoft .NET框架程序设计(修订版)》 第十章
第十章 属性CLR提供了两种属性:无参属性和含参属性。前者通常被称为属性(property),后者C#称为索引器。 Ø 10.1无参属性将所有字段的访问限制都设为私有方式或者至少是保护方式——永远不要设为共有方式,然后再以方法的形式让用户读取或者设置对象的状态信息。封装了对字段访问的方法典型地被称为访问器方法(accessor method)。访问器方法可以选择执行任何的数原创 2010-03-22 20:06:00 · 282 阅读 · 0 评论 -
《CLR Via C#(第三版)》 第十三章
第十三章 接口13.2 定义接口C#禁止接口定义任何一种静态成员。根据约定,接口类型名字要以大写字母I开头,目的是方便在源代码中辨认接口类型。接口继承可以看成是其他接口的契约包括到一个接口中。13.3 继承接口C#编译器要求将用于一个接口的方法标记为public。13.5 隐式和显式接口方法实现在C#中定义一个显式接口方法时,不允许指定可访问性(比如public或p原创 2012-11-23 15:41:18 · 324 阅读 · 0 评论