词条 | C#3.0完全参考手册 |
释义 | 《C# 3.0完全参考手册》通过支持LINQ(Language Integrated Query,语言集成查询),C# 3.0为C#编程带来了彻底的变革,全球最优秀的畅销书作者Herbert Schildt已经更新并扩展了他的经典编程参考手册以详细介绍C# 3.0。通过使用精心编写的说明内容、权威人士的提示信息以及数百个示例,《C# 3.0完全参考手册》深入介绍了C#的所有方面,包括它的关键字、语法和核心库。另外,《C# 3.0完全参考手册》详细介绍了C# 3.0的新增功能,如LINQ、拉姆达表达式、隐式类型的变量和匿名类型。 图书信息书名: C# 3.0完全参考手册 作者:希尔特(HerbertSchildt) 赵利通 出版社:清华大学出版社 出版时间: 2010年03月01日 上架日期: 2010年04月16日 ISBN: 9787302220725 开本: 16开 装帧:平装 定价: 128.00元 内容简介这本综合性指南采用了Herbert一贯的写作风格,即条理清晰,语言精练,而且重点突出,是每个C#程序员不可或缺的参考资源。无论您是编程初学者还是老练的专业编程人员,都可以在这本权威书籍中找到关于所有C#问题的答案。 作者简介希尔特(Herbert Schildt),是世界顶级程序设计大师,全球顶尖编程图书作者之一。他是C、C++、Java和C#编程语言的权威,也是Windows编程方面的专家。拥有伊利诺斯大学的计算机科学硕士学位。他的编程书籍在世界范围内的销量已经超过3000000册,并被翻译成多种语言流传于世。 图书目录第Ⅰ部分 C# 语 言 第1章 C#的起源 3 1.1 C#的族谱 3 1.1.1 C语言:现代程序设计的开端 3 1.1.2 OOP和C++语言的创建 4 1.1.3 Internet和Java的出现 4 1.1.4 C#的创建 5 1.1.5 C#的发展 6 1.2 C#如何与.NET Framework相关 7 1.3 公共语言运行库的工作原理 7 1.4 托管和非托管代码 8 第2章 C#概述 9 2.1 面向对象程序设计 9 2.1.1 封装 10 2.1.2 多态性 10 2.1.3 继承 11 2.2 简单示例 11 2.2.1 C#命令行编译器csc.exe 12 2.2.2 使用Visual Studio IDE 13 2.2.3 逐行分析第一个示例程序 17 2.3 处理语法错误 18 2.4 改写示例一 19 2.5 简单示例二 20 2.6 另一种数据类型 21 2.7 两种控制语句 23 2.7.1 if语句 23 2.7.2 for循环 25 2.8 代码块 26 2.9 分号、定位和缩进 28 2.10 C#语言的关键字 28 2.11 标识符 29 2.12 .NET Framework类库 30 第3章 数据类型、直接量和变量 31 3.1 数据类型的重要性 31 3.2 C#的数据类型 31 3.3 整数类型 32 3.4 浮点类型 34 3.5 decimal类型 36 3.6 字符类型 37 3.7 布尔类型 38 3.8 自定义输出格式 39 3.9 直接量 42 3.9.1 十六进制直接量 42 3.9.2 字符转义序列 43 3.9.3 字符串直接量 43 3.10 变量 45 3.10.1 初始化变量 45 3.10.2 动态初始化变量 46 3.10.3 隐式类型的变量 46 3.11 变量的作用域和生命周期 48 3.12 类型转换 50 3.12.1 自动类型转换 50 3.12.2 强制转换不兼容的类型 51 3.13 表达式中的类型转换 54 第4章 运算符 59 4.1 算术运算符 59 4.2 关系和逻辑运算符 63 4.3 赋值运算符 67 4.4 按位运算符 68 4.4.1 按位与、或、异或和取反运算符 69 4.4.2 移位运算符 75 4.4.3 按位复合赋值 77 4.5 问号(?)运算符 78 4.6 空白符和圆括号 79 4.7 运算符优先级 79 第5章 程序控制语句 81 5.1 if语句 81 5.1.1 if语句嵌套 82 5.1.2 if-else-if阶梯结构 83 5.2 switch语句 84 5.3 for循环 88 5.4 while循环 96 5.5 do-while循环 97 5.6 foreach循环 98 5.7 使用break语句退出循环 98 5.8 使用continue语句 101 5.9 goto语句 102 第6章 类和对象 105 6.1 类基础 105 6.1.1 类的基本形式 105 6.1.2 定义类 106 6.2 如何创建对象 110 6.3 引用类型的变量和赋值 111 6.4 方法 111 6.4.1 给Building类添加方法 112 6.4.2 从方法返回 114 6.4.3 返回值 115 6.4.4 使用参数 117 6.4.5 给Building类添加带参数的方法 119 6.4.6 避免产生不可到达的代码 121 6.5 构造函数 121 6.5.1 带参数的构造函数 122 6.5.2 给Building类添加构造函数 123 6.6 new运算符 124 6.7 垃圾回收和析构函数 125 6.8 this关键字 127 第7章 数组和字符串 131 7.1 数组 131 7.2 多维数组 135 7.2.1 二维数组 135 7.2.2 三维或更多维的数组 136 7.2.3 初始化多维数组 137 7.3 交错数组 138 7.4 数组引用赋值 141 7.5 Length属性 142 7.6 隐式类型的数组 145 7.7 foreach循环 147 7.8 字符串 150 7.8.1 构造字符串 151 7.8.2 操作字符串 151 7.8.3 字符串数组 154 7.8.4 字符串是不可变的 156 7.8.5 在switch语句中使用字符串 157 第8章 方法和类 159 8.1 控制对类成员的访问 159 8.1.1 C#的访问修饰符 159 8.1.2 公有访问和私有访问的应用 161 8.1.3 访问控制:案例分析 161 8.2 给方法传递引用 166 8.3 使用ref和out参数 170 8.3.1 使用ref关键字 170 8.3.2 使用out关键字 172 8.3.3 对引用参数使用ref和out 174 8.4 使用数量可变的参数 176 8.5 返回对象 178 8.6 方法重载 182 8.7 构造函数重载 187 8.8 对象初始化器 193 8.9 Main()方法 194 8.9.1 从Main()返回值 194 8.9.2 给Main()传递参数 194 8.10 递归 196 8.11 理解static关键字 199 8.12 静态类 204 第9章 运算符重载 207 9.1 运算符重载基础 207 9.1.1 重载二元运算符 208 9.1.2 重载一元运算符 210 9.2 处理针对C#内置类型的运算 214 9.3 重载关系运算符 219 9.4 重载true和false 221 9.5 重载逻辑运算符 223 9.5.1 一种重载逻辑运算符的简单方法 223 9.5.2 使用短路运算符 226 9.6 转换运算符 230 9.7 运算符重载的注意事项 234 9.8 运算符重载的另一个示例 235 第10章 索引器和属性 239 10.1 索引器 239 10.1.1 创建一维索引器 239 10.1.2 索引器重载 243 10.1.3 索引器不需要一个潜在的数组 245 10.1.4 多维索引器 246 10.2 属性 249 10.2.1 自动实现属性 254 10.2.2 对属性使用对象初始化器 254 10.2.3 属性限制 255 10.3 对存取器使用访问修饰符 255 10.4 使用索引器和属性 258 第11章 继承 265 11.1 继承基础 265 11.2 成员访问和继承 268 11.3 构造函数和继承 272 11.4 继承和名称隐藏 279 11.5 创建多级层次结构 282 11.6 构造函数的调用 285 11.7 基类引用和派生对象 286 11.8 虚方法和重写 290 11.8.1 重写方法的原因 294 11.8.2 应用虚方法 294 11.9 使用抽象类 298 11.10 使用sealed来阻止继承 302 11.11 object类 302 11.11.1 装箱和拆箱 304 11.11.2 object是否是通用数据类型 306 第12章 接口、结构和枚举 309 12.1 接口 309 12.2 使用接口类型的引用 314 12.3 接口属性 317 12.4 接口索引器 318 12.5 接口的继承 320 12.6 接口继承引起的名称隐藏 321 12.7 显式实现 321 12.8 在接口和抽象类之间选择 324 12.9 .NET标准接口 324 12.10 结构 325 12.11 枚举 330 12.11.1 初始化一个枚举 332 12.11.2 指定枚举的基本类型 332 12.11.3 使用枚举 332 第13章 异常处理 335 13.1 System.Exception类 335 13.2 异常处理的基础 335 13.2.1 使用try和catch 336 13.2.2 一个简单的异常示例 336 13.2.3 另一个异常示例 338 13.3 未捕获异常的后果 339 13.4 使用多个catch子句 341 13.5 捕获所有的异常 342 13.6 嵌套try块 344 13.7 抛出异常 345 13.8 finally语句 347 13.9 进一步分析异常类 349 13.10 派生异常类 352 13.11 捕获派生类异常 356 13.12 checked语句和unchecked语句 357 第14章 I/O系统 361 14.1 C#的I/O依赖于数据流 361 14.1.1 字节数据流和字符数据流 361 14.1.2 预定义数据流 361 14.1.3 数据流类 362 14.1.4 Stream类 362 14.1.5 字节数据流类 363 14.1.6 字符数据流封装类 363 14.1.7 二进制数据流 365 14.2 控制台I/O 365 14.2.1 读取控制台输入 365 14.2.2 使用ReadKey()方法 367 14.2.3 写入控制台输出 369 14.3 文件数据流和面向字节的文件I/O操作 370 14.3.1 打开和关闭文件 370 14.3.2 从FileStream中读取字节 372 14.3.3 写入文件 373 14.3.4 使用FileStream复制文件 374 14.4 基于字符的文件I/O操作 376 14.4.1 使用StreamWriter类 376 14.4.2 StreamReader类 378 14.5 重定向标准数据流 380 14.6 读取和写入二进制数据 382 14.6.1 BinaryWriter 382 14.6.2 BinaryReader 382 14.6.3 二进制I/O操作的程序示例 384 14.7 随机访问文件 388 14.8 使用MemoryStream 391 14.9 StringReader和StringWriter 393 14.10 把数值型字符串转换为内部表示格式 394 第15章 委托、事件和拉姆达表达式 399 15.1 委托 399 15.1.1 委托的方法组转换 402 15.1.2 使用实例方法作为委托 402 15.1.3 多播委托 404 15.1.4 协变和逆变 406 15.1.5 System.Delegate 408 15.1.6 使用委托的原因 408 15.2 匿名函数 408 15.3 匿名方法 408 15.3.1 给匿名方法传递参数 409 15.3.2 从匿名方法中返回一个值 410 15.3.3 在匿名方法中使用外部变量 411 15.4 拉姆达表达式 413 15.4.1 拉姆达运算符 413 15.4.2 表达式拉姆达 413 15.4.3 语句拉姆达 416 15.5 事件 418 15.5.1 多播委托事件的示例 420 15.5.2 作为事件处理程序的实例方法和静态方法的区别 422 15.5.3 使用事件存取器 424 15.5.4 事件的其他特性 429 15.6 对事件使用匿名方法和拉姆达表达式 429 15.7 .NET事件的规则 430 15.8 事件的应用:案例分析 433 第16章 名称空间、预处理器和程序集 437 16.1 名称空间 437 16.1.1 名称空间的声明 437 16.1.2 名称空间可以避免名称冲突 440 16.1.3 using命令 441 16.1.4 using命令的另一种形式 443 16.1.5 名称空间的合成 445 16.1.6 嵌套名称空间 446 16.1.7 全局名称空间 448 16.1.8 使用名称空间别名限定符(::) 448 16.2 预处理器 452 16.2.1 #define 452 16.2.2 #if和#endif 453 16.2.3 #else和#elif 454 16.2.4 #undef 456 16.2.5 #error 456 16.2.6 #warning 457 16.2.7 #line 457 16.2.8 #region和#endregion 457 16.2.9 #pragma 457 16.3 程序集和internal访问修饰符 458 第17章 运行时类型标识、反射和特性 461 17.1 运行时类型标识 461 17.1.1 使用is运算符测试类型 461 17.1.2 使用as运算符 462 17.1.3 使用typeof运算符 464 17.2 反射 465 17.3 使用反射 467 17.3.1 获取方法的相关信息 467 17.3.2 GetMethods()的另一种形式 470 17.3.3 使用反射调用方法 471 17.3.4 获取Type对象的构造函数 474 17.3.5 从程序集获得类型 478 17.3.6 全自动类型查询 483 17.4 特性 486 17.4.1 特性基础 486 17.4.2 创建特性 486 17.4.3 连接特性 487 17.4.4 获取对象的特性 487 17.4.5 位置参数和命名参数 489 17.5 三个内置特性 493 17.5.1 AttributeUsage特性 493 17.5.2 Conditional特性 494 17.5.3 Obsolete特性 495 第18章 泛型 497 18.1 泛型概念 497 18.2 一个简单的泛型示例 498 18.2.1 泛型类型因类型参数的不同而不同 501 18.2.2 泛型如何实现类型安全 501 18.3 使用两个类型参数的泛型类 504 18.4 泛型类的通用形式 505 18.5 类型约束 505 18.5.1 基类约束 506 18.5.2 接口约束 514 18.5.3 new()构造函数约束 518 18.5.4 引用类型和值类型约束 519 18.5.5 使用约束建立两个类型参数之间的关系 522 18.5.6 使用多重约束 523 18.6 创建类型参数的默认值 524 18.7 泛型结构 525 18.8 创建泛型方法 526 18.8.1 调用泛型方法时显式地指定类型实参 529 18.8.2 为泛型方法指定约束 529 18.9 泛型委托 529 18.10 泛型接口 532 18.11 比较同一类型参数的实例 536 18.12 泛型类的层次结构 539 18.12.1 使用泛型基类 539 18.12.2 泛型派生类 541 18.13 重写泛型类中的虚方法 542 18.14 重载带类型参数的方法 544 18.15 泛型类型的实例化 545 18.16 使用泛型时的一些局限 546 18.17 小结 546 第19章 LINQ 547 19.1 LINQ的定义 547 19.2 LINQ的基础知识 548 19.2.1 简单查询 548 19.2.2 查询可以多次执行 550 19.2.3 查询中的数据类型的关联方式 551 19.2.4 查询的一般形式 552 19.3 使用where子句筛选值 552 19.4 使用orderby子句排序结果 554 19.5 深入讨论select子句 558 19.6 使用嵌套的from子句 561 19.7 使用group子句分组结果 562 19.8 使用into子句创建继续 564 19.9 在查询中使用let子句创建变量 566 19.10 使用join子句连接两个序列 567 19.11 匿名类型 570 19.12 创建组连接 572 19.13 查询方法 575 19.13.1 基本查询方法 575 19.13.2 使用查询方法创建查询 576 19.13.3 查询语法与查询方法的对比 578 19.13.4 更多与查询相关的扩展方法 578 19.14 延期执行查询和立即执行查询 581 19.15 表达式树 582 19.16 扩展方法 583 第20章 不安全代码、指针、空类型和其他主题 587 20.1 不安全代码 587 20.1.1 指针基础 588 20.1.2 使用unsafe关键字 589 20.1.3 使用fixed修饰符 590 20.1.4 通过指针访问结构成员 591 20.1.5 指针运算 591 20.1.6 指针的比较 593 20.1.7 指针和数组 593 20.1.8 指针和字符串 595 20.1.9 多重间接寻址 596 20.1.10 指针数组 597 20.1.11 sizeof 597 20.1.12 stackalloc 597 20.1.13 创建固定大小的缓冲区 598 20.2 空类型 599 20.2.1 空类型基础 600 20.2.2 表达式中的空对象 601 20.2.3 ??运算符 602 20.2.4 在空对象上使用关系和逻辑运算符 603 20.3 部分类型 604 20.4 部分方法 605 20.5 友元程序集 606 20.6 其他关键字 607 20.6.1 lock关键字 607 20.6.2 readonly关键字 607 20.6.3 const和volatile关键字 608 20.6.4 using语句 608 20.7 extern关键字 609 20.7.1 声明extern方法 610 20.7.2 声明extern程序集别名 611 第Ⅱ部分 C#类库研究 第21章 研究System名称空间 615 21.1 System的成员 615 21.2 Math类 617 21.3 与内置值类型对应的.NET结构 622 21.3.1 整型结构 623 21.3.2 浮点类型结构 625 21.3.3 Decimal结构 628 21.3.4 Char结构 633 21.3.5 Boolean结构 638 21.4 Array类 639 21.4.1 排序和搜索数组 646 21.4.2 反转数组 649 21.4.3 复制数组 649 21.4.4 使用谓词 650 21.4.5 使用Action委托 652 21.5 BitConverter类 653 21.6 用Random产生随机数 655 21.7 内存管理和GC类 656 21.8 Object类 657 21.9 IComparable和IComparable[T]接口 657 21.10 IEquatable[T]接口 658 21.11 IConvertible接口 658 21.12 ICloneable接口 658 21.13 IFormatProvider接口和 IFormattable接口 660 第22章 字符串和格式化 663 22.1 C#中的字符串 663 22.2 String类 663 22.2.1 字符串构造函数 664 22.2.2 String类的字段、索引器和属性 664 22.2.3 字符串运算符 665 22.2.4 字符串方法 665 22.2.5 填充和剪裁字符串 679 22.2.6 插入、删除和替换 681 22.2.7 改变字母大小写 682 22.2.8 使用Substring()方法 682 22.2.9 字符串扩展方法 683 22.3 格式化类型 683 22.3.1 格式化类型概述 683 22.3.2 数值型数据的格式说明符 684 22.3.3 理解参数编号 686 22.4 使用String.Format()和 ToString()格式化数据 686 22.4.1 使用String.Format()格式化值 686 22.4.2 使用ToString()格式化数据 689 22.5 自定义数字格式 690 22.6 格式化日期和时间 693 22.7 格式化枚举 697 第23章 多线程程序设计 701 23.1 多线程基础 701 23.2 Thread类 702 23.2.1 创建和启动线程 702 23.2.2 一些简单的改进 705 23.2.3 创建多个线程 706 23.3 确定线程结束的时间 708 23.4 为线程传递参数 710 23.5 IsBackground属性 712 23.6 线程优先级 713 23.7 同步 715 23.7.1 实现同步的另一种方式 719 23.7.2 Monitor类和锁 720 23.8 使用Wait()、Pulse()和PulseAll()实现线程通信 721 23.8.1 Wait()和Pulse()的示例 721 23.8.2 死锁和竞争条件 725 23.9 使用MethodImplAttribute属性 725 23.10 使用互斥锁和信号量 727 23.10.1 互斥锁 727 23.10.2 信号量 731 23.11 使用事件 734 23.12 Interlocked类 736 23.13 终止线程 737 23.13.1 Abort()的另一种形式 739 23.13.2 取消Abort() 740 23.14 挂起和恢复线程 742 23.15 判断线程的状态 742 23.16 使用主线程 742 23.17 多线程编程提示 744 23.18 开启独立任务 744 第24章 集合、枚举器和迭代器 747 24.1 集合概述 747 24.2 非泛型集合 748 24.2.1 非泛型接口 748 24.2.2 DictionaryEntry结构 752 24.2.3 非泛型集合类 753 24.3 使用BitArray类存储位 768 24.4 专用集合 770 24.5 泛型集合 771 24.5.1 泛型接口 771 24.5.2 KeyValuePair[TK,TV]结构 775 24.5.3 泛型集合类 775 24.6 在集合中存储用户自定义的类 793 24.7 实现IComparable接口 795 24.7.1 为非泛型集合实现IComparable接口 796 24.7.2 为泛型集合实现IComparable[T]接口 797 24.8 使用IComparer接口 799 24.8.1 使用非泛型的IComparer 799 24.8.2 使用泛型的IComparer[T] 800 24.9 通过枚举器访问集合 802 24.9.1 使用枚举器 802 24.9.2 使用IDictionaryEnmerator 803 24.10 实现IEnumerable和IEnumerator接口 805 24.11 迭代器 806 24.11.1 停用迭代器 808 24.11.2 使用多个yield指令 809 24.11.3 创建命名迭代器 810 24.11.4 创建泛型迭代器 811 24.12 集合初始化器 812 第25章 通过Internet连网 813 25.2 统一资源标识符 815 25.3 Internet访问基础 815 25.3.1 WebRequest类 816 25.3.2 WebResponse类 818 25.3.3 HttpWebRequest类和HttpWebResponse类 819 25.3.4 第一个简单的示例 819 25.4 处理网络错误 821 25.4.1 Create()产生的异常 822 25.4.2 GetResponse()产生的异常 822 25.4.3 GetResponseStream()产生的异常 822 25.4.4 使用异常处理 822 25.5 Uri类 824 25.6 访问附加的HTTP响应信息 825 25.6.1 访问报头 826 25.6.2 访问Cookie 827 25.6.3 使用LastModified属性 829 25.7 MiniCrawler:案例分析 829 25.8 使用WebClient 833 第26章 使用System.Windows.Forms创建基于窗体的Windows应用程序 837 26.1 Windows程序设计简史 837 26.2 编写基于窗体的Windows应用程序的两种方式 838 26.3 Windows与用户交互操作的方法 838 26.4 Windows窗体 839 26.5 基于窗体的Windows框架程序 839 26.6 添加按钮 841 26.6.1 按钮概述 842 26.6.2 给窗体添加按钮 842 26.6.3 简单的按钮示例 842 26.7 消息处理 843 26.8 使用消息框 845 26.9 添加菜单 848 26.9.1 创建传统样式的主菜单 848 26.9.2 使用MenuStrip创建新式菜单 852 附录A 文档注释快速参考 857 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。