内容简介
《C# 4.0权威指南》由国内资深微软技术专家亲自执笔,微软技术开发者社区和技术专家联袂推荐。
内容新颖,基于最新的C# 4.0、NET Framework 4和Visual Studio 2010;写作方式有创新,用图解的方式对C#进行了完美的演绎;内容全面,不仅重点讲解了C# 4.0的所有新特性,而且对C#的所有知识点的原理、用法和要点都进行了全面的讲解和深度的分析,广度和深度完美结合。本书注重实践,包含大量有价值的示例代码,可操作性极强。
全书分为三个部分:准备篇首先对.NET体系结构进行了全面的介绍,能帮助所有.NET相关技术的读者建立.NET的大局观,对初学者尤为重要,接着用简单但完整的示例演示了C#应用程序开发的全过程,能迅速带领读者进入实践状态;语法篇对C#的语法进行了系统而全面的讲解,包括标识符和关键字、变量和常量、类型以及类型转换、表达式和运算符、语句、方法、类、继承、多态、接口、结构、枚举、委托、事件、泛型、数组、集合、字符串和正则表达式、异常处理、命名空间和程序集、预处理指令、元数据和特性、异步编程和多线程编程、I/O操作、XML处理增强的COM Interop和并行编程等;附录部分讲解了Visual Studio 2010的安装、配置和使用,以便于没有经验的初学者能快速搭建开发环境。
《C# 4.0权威指南》不仅是所有希望掌握.NET平台开发技术的读者的理想学习资料,而且也是所有.NET(C#)程序员不可多得的参考书,适合各层次的微软技术开发者和高校的师生阅读。
姜晓东,资深微软技术专家和系统架构师,对.NET体系架构、C#、CIL、Win32平台都有较深入的研究。著名微软技术讲师,在江西微软技术中心主讲软件设计(UML和设计模式)和.NET FrameWork方面的课程,曾在微软区域技术中心的“周五讲坛”主讲C#和Windows Mobile开发方面的课程,并获得“最佳讲师”称号。多年来一直活跃在研发一线,具有多年的项目研发经验,曾参与了财政工程项目、国家863软件项目以及电子基金项目的研发,在桌面应用和Web应用方面都积累了丰富的实践经验。
CSDN的元老级会员,51CTO的技术博客专家,对IT技术的发展方向有独到的见解,近期关注HTML 5和移动开发。
目录
前言 C#发展路线图 C#4.0新特性总述 为何写作本书 本书面向的读者 如何阅读本书 致谢 第一部分:准备篇 1 第1章 .NET体系结构 1 1.1 .NET框架概述 3 1.2 .NET的平台无关性 4 1.3公共语言运行时(CLR) 5 1.4 通用类型系统(CTS) 6 1.4.1值类型和引用类型 7 1.4.2装箱和拆箱 8 1.5 公共语言规范(CLS) 10 1.6 语言的互操作性 11 1.4即时编译(JIT) 12 1.5中间语言(CIL) 13 1.6基类库(BCL) 14 第2章 从“Hello World!”开始 15 2.1一个简单的C#程序 15 2.2编译和运行程序 16 2.2.1在Visual Stuido 2010中编译和运行 16 2.2.2通过命令行编译和运行 17 2.3详细介绍 21 2.4小结 25 第二部分:语法篇 26 第3章 标识符和关键字 26 3.1 标识符 26 3.2 关键字 27 3.3 标识符的命名约定 30 3.4 小结 30 第4章 变量、常量和类型 31 4.1变量 31 4.1.1给变量命名 32 4.1.2声明变量 32 4.1.3变量的初始化 33 4.1.4 类型推断 35 4.1.5变量的作用域 36 4.2常量 40 4.3C#数据类型 40 4.3.1内置的值类型 42 4.3.2 内置的引用类型 52 4.3.3指针类型 59 4.3.4 Nullable类型 60 4.3.5 dynamic类型 61 4.4 进阶阅读:关于动态语言运行时(DLR) 63 第5章 类型转换 66 5.1隐式类型转换 66 5.1.1 数值类型 68 5.1.2 引用类型 69 5.1.3 装箱 70 5.2 显式类型转换 71 5.2.1数值类型 73 5.2.2溢出检查 73 5.2.3引用类型 75 5.2.4拆箱 76 5.3 as和is运算符 76 第6章 表达式和运算符 83 6.1 表达式 83 6.2 运算符的类型 84 6.3 运算符的优先级 85 6.4 算术运算符 86 6.5 求余运算符 87 6.6 递增运算符和递减运算符 88 6.7 关系和类型检测运算符 90 6.8 相等性判断运算符 91 6.9 条件运算符 93 6.10 逻辑运算符 95 6.11 位运算符 96 6.12 赋值运算符 97 6.13 typeof运算符 99 6.14 运算符重载 100 6.14.1 运算符重载 101 6.14.2 可重载的运算符 102 第7章 语句 103 7.1 什么是语句 103 7.2 程序的三种结构 103 7.2.1 顺序结构 104 7.2.2 分支结构 104 7.2.3 循环结构 105 7.3 条件语句 106 7.3.1 if语句 106 7.3.2 switch语句 110 7.4 跳转语句 112 7.4.1 break语句 112 7.4.2 continue语句 114 7.4.3 return语句 115 7.4.4 throw语句 116 7.4.5 goto语句 116 7.4.6 default语句 117 7.5 标签语句 117 7.5.1 标签 118 7.5.2 标签语句的有效范围 118 7.6 循环语句 118 7.6.1 while循环 119 7.6.2 do…while循环 120 7.6.3 for循环 121 7.6.4 foreach…in循环 123 7.7 using语句 124 第8章 方法 127 8.1 方法的构成 127 8.2 局部变量和常量 128 8.3 方法的调用 130 8.4 返回值 131 8.5 参数 132 8.5.1 形参 132 8.5.2 实参 133 8.5.3 新特性:命名和可选参数 134 8.6 四种类型的参数 139 8.6.1 按值传递参数 139 8.6.2 按引用传递参数,关键字:ref 142 8.6.3 输出参数,关键字:out 145 8.6.4 参数数组,关键字:params 148 8.7 栈帧 150 8.8 递归 151 8.9 方法的重载 152 8.10静态方法 154 第9章 类 156 9.1 类是什么 156 9.2 “Hello World”程序回顾 157 9.3 类的声明 158 9.4 类的成员 159 9.4.1 字段 160 9.4.2 静态字段 161 9.4.3 方法 163 9.4.4 字段的初始化 163 9.4.5 属性 165 9.5 类的实例:对象 177 9.6 实例化中的内存分配 178 9.7 实例的成员 179 9.8 this关键字 179 9.9 访问修饰符 181 9.10 访问类的成员 182 9.10.1 从类内部访问成员 182 9.10.2 从类外部访问成员 183 9.10.3 从类外部访问静态成员 184 9.11 构造函数 185 9.12 对象初始化列表 193 9.13 析构函数 196 9.14 只读字段和常数 198 9.15 索引器 200 9.16 分部类型和分部方法,修饰符:partial 201 9.16.1 分部类 202 9.16.2 分部方法 204 9.17 注释 208 9.17.1 行注释 208 9.17.2 块注释 210 9.17.3 XML文档注释 211 第10章 继承 215 10.1 类的继承 215 10.2 访问继承的成员 217 10.3 使用new修饰符隐藏基类的成员 219 10.4 访问基类的成员 221 10.5 类的初始化顺序 222 10.6 在派生类中指定基类构造函数 224 10.7 类的访问修饰符 229 10.8 跨程序集的继承 229 10.9 密封类 231 10.10 静态类 232 10.11 扩展方法 234 10.12 派生类型的向上转型 236 第11章 多态 238 11.1 重载方法 239 11.2 虚方法 243 11.3 覆写方法 244 11.4 覆写标记为override的方法 246 11.5 抽象类及抽象方法 249 第12章 接口 252 12.1 定义接口 253 12.2 声明和实现接口 254 12.3 基类中的实现作为接口实现 258 12.4 实现多个接口 259 12.5 实现具有相同成员的接口 261 12.6 显式接口成员实现 263 12.7 调用显式接口成员实现 265 12.8 接口的派生 267 第13章 结 构 269 13.1 什么是结构 269 13.2 结构是值类型 270 13.3 给结构赋值 273 13.4 构造函数 275 13.4.1 实例构造函数 275 13.4.2 静态构造函数 277 13.5 多态和可继承性 279 13.6 装箱和拆箱 280 13.7 结构和类的对比 281 13.7.1字段初始化 282 13.7.2性能 283 13.7.3结构和类的适用场合分析 286 第14章 枚 举 287 14.1 什么是枚举 287 14.2 设置枚举的底层数据类型 291 14.3 显式设置枚举的成员常量值 292 14.4 使用标志枚举 294 14.5一些使用建议 296 第15章 委 托 298 15.1 什么是委托 298 15.2 委托是引用类型 299 15.3 委托的声明和实例化 300 15.4 委托的组合 302 15.5 为委托添加一个方法 304 15.6 从委托中删除一个方法 305 15.7 委托在回调中的应用 307 15.8 委托中的协变和逆变 309 15.9 匿名方法 312 15.10 λ表达式 315 第16章 事 件 318 16.1 什么是事件 318 16.2 事件和委托的关系 319 16.3 如何声明事件 319 16.4 订阅事件 321 16.5 触发事件 324 16.6 使用和扩展EventArgs类 325 16.7 使用自定义委托 327 16.8 事件访问器 330 第17章 泛 型 332 17.1 什么是泛型 332 17.2 泛型类型 335 17.3 泛型类型的声明和实例化 337 17.4 类型参数 342 17.5 类型参数的约束 343 17.5.1 Where子句 344 17.5.2 约束类型和顺序 345 17.6 泛型类 346 17.7 泛型结构 350 17.8 泛型接口 351 17.9 泛型委托 354 17.10 泛型方法 356 17.11 扩展方法和泛型类 358 17.12 协变和逆变 360 第18章 数 组 362 18.1 数组的声明 363 18.2 数组的类型 364 18.3 数组派生自Array对象 365 18.4 实例化数组 366 18.5 初始化数组 368 18.5.1 显式初始化一维数组 369 18.5.2 显式初始化矩形数组及要点 370 18.5.3 隐式类型数组 373 18.6 访问数组元素 374 18.7 交错数组 375 18.7.1 交错数组的声明 376 18.7.2 交错数组的实例化 376 18.7.3 交错数组的初始化 377 18.8 矩形数组和交错数组的对比 378 18.9 使用foreach和for语句访问数组 381 18.9.1 foreach语句 381 18.9.2 for语句 383 18.9.3 迭代变量 384 18.10 数组协变 386 18.11 从Array对象继承的成员 388 18.12 数组的浅复制和深复制 390 第19章 集 合 396 19.1 集合接口 396 19.2 常用的几种集合类型 400 19.2.1 ArrayList 402 19.2.2 Hashtable 406 19.2.3 Queue和Queue