目录第Ⅰ部分C#语言第1章.NET体系结构....31.1C#与.NET的关系......31.2公共语言运行库......31.3详细介绍中间语言......61.3.1面向对象和接口的支持.....71.3.2相异值类型和引用类型.....81.3.3强数据类型.....81.3.4通过异常方法处理错误.....141.3.5特性的使用.....141.4程序集......141.4.1私有程序集.....151.4.2共享程序集.....161.4.3反射.....161.5.NETFramework类......161.6命名空间......171.7用C#创建.NET应用程序......181.7.1创建ASP.NET应用程序.....181.7.2创建Windows窗体.....201.7.3Windows控件.....201.7.4Windows服务.....201.8C#在.NET企业体系结构中的作用......201.9小结......22第2章C#基础....232.1引言......232.2第一个C#程序......232.2.1代码.....242.2.2编译并运行程序.....242.2.3详细介绍.....252.3变量........272.3.1变量的初始化.....272.3.2变量的作用域.....282.3.3常量.....312.4预定义数据类型......322.4.1值类型和引用类型.....322.4.2CTS类型.....332.4.3预定义的值类型.....332.4.4预定义的引用类型.....362.5流控制......392.5.1条件语句.....392.5.2循环.....432.5.3跳转语句.....462.6枚举......472.7数组......492.8命名空间......502.8.1using语句.....512.8.2命名空间的别名.....522.9Main()方法......532.9.1多个Main()方法.....532.9.2给Main()方法传送参数.....542.10有关编译C#文件的更多内容......552.11控制台I/O....562.12使用注释......582.12.1源文件中的内部注释.....582.12.2XML文档说明.....592.13C#预处理器指令......612.13.1#define和#undef.612.13.2#if,#elif,#else和#endif.622.13.3#warning和#error.632.13.4#region和#endregion..632.13.5#line..642.13.6#pragma..642.14C#编程规则......642.14.1用于标识符的规则.....642.14.2用法约定.....652.15小结......71第3章对象和类型....723.1类和结构......723.2类成员......733.2.1数据成员.....733.2.2函数成员.....743.2.3只读字段.....883.3结构......893.3.1结构是值类型.....903.3.2结构和继承.....913.3.3结构的构造函数.....913.4部分类......923.5静态类......943.6Object类......943.6.1System.Object方法.....943.6.2ToString()方法.....953.7小结......97第4章继承....984.1继承的类型......984.1.1实现继承和接口继承.....984.1.2多重继承.....994.1.3结构和类.....994.2实现继承......994.2.1虚方法.....1004.2.2隐藏方法.....1014.2.3调用函数的基类版本.....1024.2.4抽象类和抽象函数.....1034.2.5密封类和密封方法.....1034.2.6派生类的构造函数.....1044.3修饰符......1094.3.1可见性修饰符.....1094.3.2其他修饰符.....1104.4接口......1114.4.1定义和实现接口.....1124.4.2派生的接口.....1164.5小结......118第5章运算符和类型强制转换....1195.1运算符......1195.1.1运算符的简化操作.....1205.1.2三元运算符.....1215.1.3checked和unchecked运算符.....1225.1.4is运算符.....1235.1.5as运算符.....1235.1.6sizeof运算符.....1235.1.7typeof运算符.....1245.1.8可空类型和运算符.....1245.1.9空接合运算符.....1245.1.10运算符的优先级.....1255.2类型的安全性......1255.2.1类型转换.....1265.2.2装箱和拆箱.....1305.3对象的相等比较......1305.3.1引用类型的相等比较.....1315.3.2值类型的相等比较.....1325.4运算符重载......1325.4.1运算符的工作方式.....1335.4.2运算符重载的示例:Vector结构.....1345.5用户定义的数据类型转换......1415.5.1执行用户定义的类型转换.....1425.5.2多重数据类型转换.....1495.6小结......152第6章委托和事件....1536.1委托......1536.1.1在C#中声明委托.....1546.1.2在C#中使用委托.....1556.2匿名方法......1586.2.1简单的委托示例.....1596.2.2BubbleSorter示例.....1616.2.3多播委托.....1646.3事件......1666.3.1从客户的角度讨论事件.....1676.3.2生成事件.....1696.4小结......173第7章内存管理和指针....1747.1后台内存管理......1747.1.1值数据类型.....1747.1.2引用数据类型.....1767.1.3垃圾收集.....1787.2释放未托管的资源......1797.2.1析构函数.....1797.2.2IDisposable接口.....1807.2.3实现IDisposable接口和析构函数.....1827.3不安全的代码......1837.3.1指针.....1837.3.2指针示例PointerPlayaround..1937.3.3使用指针优化性能.....1977.4小结......201第8章字符串和正则表达式....2028.1System.String类......2028.1.1创建字符串.....2038.1.2StringBuilder成员.....2068.1.3格式化字符串.....2078.2正则表达式......2138.2.1正则表达式概述.....2138.2.2RegularExpressionsPlayaround示例.....2148.2.3显示结果.....2168.2.4匹配、组合和捕获.....2188.3小结......220第9章集合....2219.1对象组......2219.1.1集合.....2229.1.2数组列表.....2259.1.3Stack类.....2299.1.4Queue类.....2319.1.5SortedList类.....2329.1.6字典和散列表.....2349.1.7泛型.....2439.2小结......244第10章泛型....24510.1概述......24510.1.1性能.....24510.1.2类型安全.....24610.1.3二进制代码的重用.....24710.1.4代码的扩展.....24710.1.5命名约定.....24810.2泛型集合类......24810.2.1泛型集合概述.....24810.2.2使用ListT类.....25110.2.3使用QueueT类.....25610.2.4使用LinkedListT类.....26010.3创建定制的泛型类......26510.3.1默认值.....26710.3.2约束.....26710.4泛型方法......27010.5泛型委托......27210.6Framework的其他泛型类型......27410.6.1结构NullableT...27410.6.2EventHandlerTEventArgs...27610.6.3ArraySegmentT...27610.7小结......277第11章反射....27811.1定制特性......27811.1.1编写定制特性.....27911.1.2定制特性示例:WhatsNewAttributes..28211.2反射......28611.2.1System.Type类.....28611.2.2TypeView示例.....28811.2.3Assembly类.....29111.2.4完成WhatsNewAttributes示例.....29211.3小结......296第12章错误和异常....29712.1错误和异常处理......29712.1.1异常类.....29712.1.2捕获异常.....29912.1.3用户定义的异常类.....30812.2小结......316第13章线程....31713.1线程......31713.2多线程应用程序......31813.3线程的处理......31913.3.1ThreadPlayaround示例.....32213.3.2线程的优先级.....32513.3.3同步.....32613.4使用ThreadPool创建线程......33013.5小结......334第Ⅱ部分.NET环境第14章VisualStudio2005..33714.1使用VisualStudio2005...33714.1.1创建项目.....34114.1.2解决方案和项目.....34714.1.3Windows应用程序代码.....34914.1.4读取VisualStudio6项目.....35014.1.5项目的浏览和编码.....35014.1.6生成项目.....36014.1.7调试.....36314.2修订功能......36614.3小结......368第15章程序集....36915.1程序集的含义......36915.1.1DLLHell的解决方案.....37015.1.2程序集的特性.....37015.1.3应用程序域和程序集.....37115.2程序集的结构......37415.2.1程序集的清单.....37415.2.2命名空间、程序集和组件.....37515.2.3私有程序集和共享程序集.....37515.2.4查看程序集.....37515.2.5构建程序集.....37615.3跨语言支持......38015.3.1CTS和CLS..38015.3.2语言无关性.....38115.3.3CLS要求.....38915.4全局程序集缓存......39115.4.1本机图像生成器.....39115.4.2全局程序集缓存查看器.....39215.4.3全局程序集缓存工具(gacutil.exe).39315.5创建共享程序集......39315.5.1共享程序集名.....39315.5.2创建共享程序集.....39515.6配置......40015.6.1配置类别.....40015.6.2版本问题.....40115.6.3配置目录.....40915.7小结..