C#揭秘

第一部分 C#基础
第1章 .NET平台简介
1.1 .NET是什么
1.2 CLR
1.2.1 为什么CLR如此重要
1.2.2 CLR特性
1.2.3 CLR执行过程
1.3 .NET FCL
1.4 C#和其他.NET语言
1.5 CTS
1.6 CLS
1.7 小结
第2章 C#和Visual Studio 2008概述
2.1 编写一个简单的C#程序
2.2 创建一个VS2008项目
2.2.1 运行新项目向导
2.2.2 理解解决方案和项目
2.2.3 使用VS2008编写代码
2.2.4 生成和运行程序
2.2.5 设置编译器选项
2.3 注释代码
2.3.1 多行注释
2.3.2 单行注释
2.3.3 XML文档注释
2.4 标识符和关键字
2.4.1 标识符
2.4.2 关键字
2.5 约定和风格
2.6 变量和类型
2.6.1 变量
2.6.2 简单类型
2.7 明确赋值
2.8 与程序交互
2.8.1 与控制台屏幕通信
2.8.2 与命令行通信
2.8.3 VS2008中的命令行选项
2.8.4 从程序返回值
2.9 小结
第3章 编写C#表达式和语句
3.1 C#运算符
3.1.1 一元运算符
3.1.2 二元运算符
3.1.3 关系运算符
3.1.4 逻辑运算符
3.1.5 赋值运算符
3.1.6 三元运算符
3.1.7 其他运算符
3.2 语句
3.3 块和作用域
3.4 标签
3.5 运算符优先级和结合性
3.6 选择和循环语句
3.6.1 if语句
3.6.2 switch语句
3.6.3 C#循环
3.6.4 goto语句
3.6.5 break语句
3.6.6 continue语句
3.6.7 return语句
3.7 小结
第4章 理解引用类型和值类型
4.1 引用类型和值类型简介
4.2 统一类型系统
4.2.1 统一类型系统的工作原理
4.2.2 使用object进行通用编程
4.2.3 装箱和拆箱对性能的潜在影响
4.3 引用类型和值类型的内存分配
4.3.1 引用类型内存分配
4.3.2 值类型内存分配
4.4 引用类型和值类型赋值
4.4.1 引用类型赋值
4.4.2 值类型赋值
4.5 引用类型和值类型之间的更多区别
4.5.1 引用类型和值类型继承的区别
4.5.2 引用类型和值类型构建和终结的区别
4.5.3 引用类型和值类型对象大小的考虑
4.6 C#和.NET框架类型
4.6.1 C#别名和CTS
4.6.2 使用System.Guid
4.6.3 操作System.DateTime
4.7 可空类型
4.8 小结
第5章 操作字符串
5.1 C#字符串类型
5.1.1 格式化字符串
5.1.2 比较字符串
5.1.3 检查字符串是否相等
5.1.4 连接字符串
5.1.5 复制字符串
5.1.6 检查字符串内容
5.1.7 提取字符串信息
5.1.8 填充和移除字符串输出
5.1.9 更改字符串内容
5.1.10 分离和结合字符串
5.1.11 操作字符串字符
5.1.12 通过驻留池影响CLR的字符串处理
5.2 StringBuilder类
5.2.1 Append方法
5.2.2 AppendFormat方法
5.2.3 EnsureCapacity方法
5.2.4 ToString()方法
5.3 正则表达式
5.3.1 基本的正则表达式操作
5.3.2 深入了解正则表达式
5.3.3 练习正则表达式的应用程序
5.4 小结
第6章 数组和枚举
6.1 数组
6.1.1 一维数组
6.1.2 多维数组
6.1.3 交错数组
6.2 System.Array类
6.2.1 数组边界
6.2.2 搜索和排序
6.3 使用枚举类型
6.4 System.Enum结构
6.4.1 枚举类型、整型和字符串之间的转换
6.4.2 迭代枚举类型成员
6.4.3 其他System.Enum成员
6.5 小结
第7章 用Visual Studio 2008调试
应用程序
7.1 单步调试代码
7.1.1 调试示例程序
7.1.2 设置断点
7.1.3 检查程序状态
7.1.4 单步调试代码
7.1.5 其他必备的调试命令
7.1.6 使用调试器找出程序错误
7.1.7 附加到进程
7.2 小结
第二部分 使用C#面向对象编程
第8章 设计对象
8.1 对象成员
8.2 实例和静态成员
8.3 字段
8.3.1 常量字段
8.3.2 readonly字段
8.4 方法
8.5 属性
8.5.1 声明属性
8.5.2 使用属性
8.5.3 自动实现属性
8.5.4 VS2008属性代码段
8.6 索引器
8.7 回顾一下哪里适合使用分部类型
8.8 静态类
8.9 System.Object类
8.9.1 检查对象类型
8.9.2 比较引用
8.9.3 检查相等性
8.9.4 获得散列值
8.9.5 克隆对象
8.9.6 将对象作为字符串使用
8.10 小结
第9章 设计面向对象程序
9.1 继承
9.1.1 基类
9.1.2 调用基类成员
9.1.3 隐藏基类成员
9.1.4 版本控制
9.1.5 密封类
9.2 封装对象内部信息
9.2.1 数据隐藏
9.2.2 使用修饰符支持封装
9.2.3 用于对象的访问修饰符
9.2.4 包含和继承
9.3 多态
9.3.1 仔细查看多态解决的问题
9.3.2 使用多态来解决问题
9.3.3 属性多态
9.3.4 索引器多态
9.3.5 覆写System.Object类成员
9.4 小结
第10章 编写方法和自定义操作符
10.1 方法
10.1.1 定义方法
10.1.2 本地变量
10.1.3 方法参数
10.2 重载方法
10.3 操作符重载
10.3.1 用于自定义类型的算数操作符重载
10.3.2 自定义类型上的逻辑操作符重载
10.3.3 其他操作符重载技巧
10.4 转换和转换操作符重载
10.4.1 隐式转换与显式转换
10.4.2 自定义值类型转换操作符
10.4.3 自定义引用类型转换操作符
10.5 部分方法
10.6 扩展方法
10.7 小结
第11章 错误处理和异常处理
11.1 为什么需要异常处理
11.2 异常处理的语法:try/catch块的基础
11.3 使用finally块确保资源清理
11.4 处理异常
11.4.1 处理不同的异常类型
11.4.2 处理并传递异常
11.4.3 从异常中恢复
11.5 自定义异常
11.6 checked和unchecked语句
11.7 小结
第12章 使用委托和事件进行基于事件的编程
12.1 揭示委托
12.1.1 定义委托
12.1.2 创建委托的方法处理器
12.1.3 在委托上附加处理器
12.1.4 通过委托调用方法
12.1.5 使用委托实现多播
12.1.6 检查委托的相等性
12.2 实现委托推断
12.3 匿名方法
12.4 事件
12.4.1 定义事件处理程序
12.4.2 注册事件
12.4.3 实现事件
12.4.4 触发事件
12.4.5 修改事件的add/remove方法
12.5 小结
第13章 使用命名空间命名和组织类型
13.1 为什么需要命名空间
13.1.1 组织代码
13.1.2 避免命名冲突
13.2 命名空间指令
13.2.1 using指令
13.2.2 别名指令
13.3 创建命名空间
13.4 命名空间成员
13.5 作用域与可见性
13.6 命名空间别名修饰符
13.7 外部命名空间别名
13.8 小结
第14章 抽象类和接口
14.1 抽象类
14.2 抽象类与接口的不同
14.3 实现接口
14.4 定义接口类型
14.4.1 方法
14.4.2 属性
14.4.3 索引
14.4.4 事件
14.5 隐式实现接口
14.5.1 单个类的接口实现
14.5.2 模拟多态行为
14.6 显式实现接口
14.7 接口映射
14.8 接口继承
14.9 小结
第三部分 应用C#高级语言特性
第15章 管理对象生命周期
15.1 对象初始化
15.1.1 实例构造函数
15.1.2 构造函数的重载
15.1.3 默认构造函数
15.1.4 私有构造函数
15.1.5 继承和实例化的顺序
15.1.6 静态构造函数
15.2 对象初始化器
15.3 对象终结器
15.4 自动内存管理
15.4.1 内存分配
15.4.2 垃圾收集器揭秘
15.4.3 GC优化
15.5 正确的资源清理方式
15.5.1 终结器带来的问题
15.5.2 Dispose模式
15.5.3 using语句
15.6 和垃圾收集器交互
15.7 小结
第16章 特性与反射
16.1 特性
16.1.1 使用特性
16.1.2 使用多个特性
16.2 特性参数
16.2.1 定位参数
16.2.2 命名参数
16.3 特性目标
16.4 创建自定义特性
16.5 反射
16.6 在特性上反射
16.6.1 动态创建代码
16.6.2 使用Reflection.Emit构建
16.7 小结
第17章 泛型与迭代器
17.1 非泛型集合
17.2 理解泛型的优点
17.2.1 泛型解决的问题
17.2.2 泛型是面向对象的
17.2.3 在数组、非泛型集合和泛型集合之间选择
17.3 构建泛型类型
17.3.1 使用泛型实现单链表
17.3.2 超越集合应用泛型
17.3.3 使用泛型定义类型
17.4 实现迭代器
17.4.1 GetEnumerator迭代器
17.4.2 方法迭代器
17.4.3 属性迭代器
17.4.4 索引迭代器
17.4.5 运算符迭代器
17.4.6 迭代器作为一个值的序列
17.4.7 销毁迭代器
17.5 小结
第18章 lambda表达式和表达式树
18.1 lambda表达式
18.1.1 lambda的语法
18.1.2 使用lambda
18.1.3 委托和lambda
18.2 表达式树
18.2.1 将lambda转换为表达式树
18.2.2 将表达式树转换为lambda
18.3 小结
第四部分 学习LINQ和.NET数据访问
第19章 使用LINQ访问数据
第20章 使用ADO.NET管理数据
第21章 操作XML数据
第22章 使用ADO.NET实体框架创建数据抽象
第23章 ADO.NET数据服务在云计算数据中的应用
第五部分 创建桌面用户界面
第24章 挖掘控制台应用程序极限
第25章 编写Windows Forms应用程序
第26章 创建WPF应用程序
第六部分 设计Web用户界面
第27章 使用ASP.NET创建Web 应用程序
第28章 用ASP.NET AJAX加强Web应用程序的交互性
第29章 用Silverlight精心制作丰富的Web应用程序
第七部分 使用.NET技术通信
第30章 使用.NET网络通信技术
第31章 创建Windows服务应用程序
第32章 Remoting
第33章 编写传统ASMX Web服务
第34章 使用WCF创建Web服务
第八部分 .NET应用程序架构设计示例
第35章 使用Visual Studio 2008类设计器
第36章 C#中的设计模式样例
第37章 创建N级/层系统
第38章 使用WF自动化逻辑
第九部分 体验更多的.NET框架类库
第39章 进程和线程管理
第40章 本地化和国际化
第41章 互操作(P/Invoke和COM)与不安全代码
第42章 使用System.Diagnostics中的类型诊断应用
第十部分 部署代码
第43章 程序集和版本控制
第44章 代码安全
第45章 创建Visual Studio 2008 安装项目
第46章 部署桌面应用程序
第47章 发布Web应用程序
第十一部分 附录
附录A 编译程序
附录B 获取.NET框架帮助
第1章 .NET平台简介
1.1 .NET是什么
1.2 CLR
1.2.1 为什么CLR如此重要
1.2.2 CLR特性
1.2.3 CLR执行过程
1.3 .NET FCL
1.4 C#和其他.NET语言
1.5 CTS
1.6 CLS
1.7 小结
第2章 C#和Visual Studio 2008概述
2.1 编写一个简单的C#程序
2.2 创建一个VS2008项目
2.2.1 运行新项目向导
2.2.2 理解解决方案和项目
2.2.3 使用VS2008编写代码
2.2.4 生成和运行程序
2.2.5 设置编译器选项
2.3 注释代码
2.3.1 多行注释
2.3.2 单行注释
2.3.3 XML文档注释
2.4 标识符和关键字
2.4.1 标识符
2.4.2 关键字
2.5 约定和风格
2.6 变量和类型
2.6.1 变量
2.6.2 简单类型
2.7 明确赋值
2.8 与程序交互
2.8.1 与控制台屏幕通信
2.8.2 与命令行通信
2.8.3 VS2008中的命令行选项
2.8.4 从程序返回值
2.9 小结
第3章 编写C#表达式和语句
3.1 C#运算符
3.1.1 一元运算符
3.1.2 二元运算符
3.1.3 关系运算符
3.1.4 逻辑运算符
3.1.5 赋值运算符
3.1.6 三元运算符
3.1.7 其他运算符
3.2 语句
3.3 块和作用域
3.4 标签
3.5 运算符优先级和结合性
3.6 选择和循环语句
3.6.1 if语句
3.6.2 switch语句
3.6.3 C#循环
3.6.4 goto语句
3.6.5 break语句
3.6.6 continue语句
3.6.7 return语句
3.7 小结
第4章 理解引用类型和值类型
4.1 引用类型和值类型简介
4.2 统一类型系统
4.2.1 统一类型系统的工作原理
4.2.2 使用object进行通用编程
4.2.3 装箱和拆箱对性能的潜在影响
4.3 引用类型和值类型的内存分配
4.3.1 引用类型内存分配
4.3.2 值类型内存分配
4.4 引用类型和值类型赋值
4.4.1 引用类型赋值
4.4.2 值类型赋值
4.5 引用类型和值类型之间的更多区别
4.5.1 引用类型和值类型继承的区别
4.5.2 引用类型和值类型构建和终结的区别
4.5.3 引用类型和值类型对象大小的考虑
4.6 C#和.NET框架类型
4.6.1 C#别名和CTS
4.6.2 使用System.Guid
4.6.3 操作System.DateTime
4.7 可空类型
4.8 小结
第5章 操作字符串
5.1 C#字符串类型
5.1.1 格式化字符串
5.1.2 比较字符串
5.1.3 检查字符串是否相等
5.1.4 连接字符串
5.1.5 复制字符串
5.1.6 检查字符串内容
5.1.7 提取字符串信息
5.1.8 填充和移除字符串输出
5.1.9 更改字符串内容
5.1.10 分离和结合字符串
5.1.11 操作字符串字符
5.1.12 通过驻留池影响CLR的字符串处理
5.2 StringBuilder类
5.2.1 Append方法
5.2.2 AppendFormat方法
5.2.3 EnsureCapacity方法
5.2.4 ToString()方法
5.3 正则表达式
5.3.1 基本的正则表达式操作
5.3.2 深入了解正则表达式
5.3.3 练习正则表达式的应用程序
5.4 小结
第6章 数组和枚举
6.1 数组
6.1.1 一维数组
6.1.2 多维数组
6.1.3 交错数组
6.2 System.Array类
6.2.1 数组边界
6.2.2 搜索和排序
6.3 使用枚举类型
6.4 System.Enum结构
6.4.1 枚举类型、整型和字符串之间的转换
6.4.2 迭代枚举类型成员
6.4.3 其他System.Enum成员
6.5 小结
第7章 用Visual Studio 2008调试
应用程序
7.1 单步调试代码
7.1.1 调试示例程序
7.1.2 设置断点
7.1.3 检查程序状态
7.1.4 单步调试代码
7.1.5 其他必备的调试命令
7.1.6 使用调试器找出程序错误
7.1.7 附加到进程
7.2 小结
第二部分 使用C#面向对象编程
第8章 设计对象
8.1 对象成员
8.2 实例和静态成员
8.3 字段
8.3.1 常量字段
8.3.2 readonly字段
8.4 方法
8.5 属性
8.5.1 声明属性
8.5.2 使用属性
8.5.3 自动实现属性
8.5.4 VS2008属性代码段
8.6 索引器
8.7 回顾一下哪里适合使用分部类型
8.8 静态类
8.9 System.Object类
8.9.1 检查对象类型
8.9.2 比较引用
8.9.3 检查相等性
8.9.4 获得散列值
8.9.5 克隆对象
8.9.6 将对象作为字符串使用
8.10 小结
第9章 设计面向对象程序
9.1 继承
9.1.1 基类
9.1.2 调用基类成员
9.1.3 隐藏基类成员
9.1.4 版本控制
9.1.5 密封类
9.2 封装对象内部信息
9.2.1 数据隐藏
9.2.2 使用修饰符支持封装
9.2.3 用于对象的访问修饰符
9.2.4 包含和继承
9.3 多态
9.3.1 仔细查看多态解决的问题
9.3.2 使用多态来解决问题
9.3.3 属性多态
9.3.4 索引器多态
9.3.5 覆写System.Object类成员
9.4 小结
第10章 编写方法和自定义操作符
10.1 方法
10.1.1 定义方法
10.1.2 本地变量
10.1.3 方法参数
10.2 重载方法
10.3 操作符重载
10.3.1 用于自定义类型的算数操作符重载
10.3.2 自定义类型上的逻辑操作符重载
10.3.3 其他操作符重载技巧
10.4 转换和转换操作符重载
10.4.1 隐式转换与显式转换
10.4.2 自定义值类型转换操作符
10.4.3 自定义引用类型转换操作符
10.5 部分方法
10.6 扩展方法
10.7 小结
第11章 错误处理和异常处理
11.1 为什么需要异常处理
11.2 异常处理的语法:try/catch块的基础
11.3 使用finally块确保资源清理
11.4 处理异常
11.4.1 处理不同的异常类型
11.4.2 处理并传递异常
11.4.3 从异常中恢复
11.5 自定义异常
11.6 checked和unchecked语句
11.7 小结
第12章 使用委托和事件进行基于事件的编程
12.1 揭示委托
12.1.1 定义委托
12.1.2 创建委托的方法处理器
12.1.3 在委托上附加处理器
12.1.4 通过委托调用方法
12.1.5 使用委托实现多播
12.1.6 检查委托的相等性
12.2 实现委托推断
12.3 匿名方法
12.4 事件
12.4.1 定义事件处理程序
12.4.2 注册事件
12.4.3 实现事件
12.4.4 触发事件
12.4.5 修改事件的add/remove方法
12.5 小结
第13章 使用命名空间命名和组织类型
13.1 为什么需要命名空间
13.1.1 组织代码
13.1.2 避免命名冲突
13.2 命名空间指令
13.2.1 using指令
13.2.2 别名指令
13.3 创建命名空间
13.4 命名空间成员
13.5 作用域与可见性
13.6 命名空间别名修饰符
13.7 外部命名空间别名
13.8 小结
第14章 抽象类和接口
14.1 抽象类
14.2 抽象类与接口的不同
14.3 实现接口
14.4 定义接口类型
14.4.1 方法
14.4.2 属性
14.4.3 索引
14.4.4 事件
14.5 隐式实现接口
14.5.1 单个类的接口实现
14.5.2 模拟多态行为
14.6 显式实现接口
14.7 接口映射
14.8 接口继承
14.9 小结
第三部分 应用C#高级语言特性
第15章 管理对象生命周期
15.1 对象初始化
15.1.1 实例构造函数
15.1.2 构造函数的重载
15.1.3 默认构造函数
15.1.4 私有构造函数
15.1.5 继承和实例化的顺序
15.1.6 静态构造函数
15.2 对象初始化器
15.3 对象终结器
15.4 自动内存管理
15.4.1 内存分配
15.4.2 垃圾收集器揭秘
15.4.3 GC优化
15.5 正确的资源清理方式
15.5.1 终结器带来的问题
15.5.2 Dispose模式
15.5.3 using语句
15.6 和垃圾收集器交互
15.7 小结
第16章 特性与反射
16.1 特性
16.1.1 使用特性
16.1.2 使用多个特性
16.2 特性参数
16.2.1 定位参数
16.2.2 命名参数
16.3 特性目标
16.4 创建自定义特性
16.5 反射
16.6 在特性上反射
16.6.1 动态创建代码
16.6.2 使用Reflection.Emit构建
16.7 小结
第17章 泛型与迭代器
17.1 非泛型集合
17.2 理解泛型的优点
17.2.1 泛型解决的问题
17.2.2 泛型是面向对象的
17.2.3 在数组、非泛型集合和泛型集合之间选择
17.3 构建泛型类型
17.3.1 使用泛型实现单链表
17.3.2 超越集合应用泛型
17.3.3 使用泛型定义类型
17.4 实现迭代器
17.4.1 GetEnumerator迭代器
17.4.2 方法迭代器
17.4.3 属性迭代器
17.4.4 索引迭代器
17.4.5 运算符迭代器
17.4.6 迭代器作为一个值的序列
17.4.7 销毁迭代器
17.5 小结
第18章 lambda表达式和表达式树
18.1 lambda表达式
18.1.1 lambda的语法
18.1.2 使用lambda
18.1.3 委托和lambda
18.2 表达式树
18.2.1 将lambda转换为表达式树
18.2.2 将表达式树转换为lambda
18.3 小结
第四部分 学习LINQ和.NET数据访问
第19章 使用LINQ访问数据
第20章 使用ADO.NET管理数据
第21章 操作XML数据
第22章 使用ADO.NET实体框架创建数据抽象
第23章 ADO.NET数据服务在云计算数据中的应用
第五部分 创建桌面用户界面
第24章 挖掘控制台应用程序极限
第25章 编写Windows Forms应用程序
第26章 创建WPF应用程序
第六部分 设计Web用户界面
第27章 使用ASP.NET创建Web 应用程序
第28章 用ASP.NET AJAX加强Web应用程序的交互性
第29章 用Silverlight精心制作丰富的Web应用程序
第七部分 使用.NET技术通信
第30章 使用.NET网络通信技术
第31章 创建Windows服务应用程序
第32章 Remoting
第33章 编写传统ASMX Web服务
第34章 使用WCF创建Web服务
第八部分 .NET应用程序架构设计示例
第35章 使用Visual Studio 2008类设计器
第36章 C#中的设计模式样例
第37章 创建N级/层系统
第38章 使用WF自动化逻辑
第九部分 体验更多的.NET框架类库
第39章 进程和线程管理
第40章 本地化和国际化
第41章 互操作(P/Invoke和COM)与不安全代码
第42章 使用System.Diagnostics中的类型诊断应用
第十部分 部署代码
第43章 程序集和版本控制
第44章 代码安全
第45章 创建Visual Studio 2008 安装项目
第46章 部署桌面应用程序
第47章 发布Web应用程序
第十一部分 附录
附录A 编译程序
附录B 获取.NET框架帮助
Joe Mayo,使用C#的先驱,拥有20多年丰富的开发经验,精通C、C++和Java等多种编程语言。在C#这个新语言推出不久,他就创建了C# Station网站,在其上公开C#教程,为全世界的Web开发人员所欢迎。除本书外,他还著有LINQ Programming一书。
C#提供了很多强大的特性,特别是通过使用 lambda表达式、扩展方法和 LINQ,方便地引入了函数式编程,使 C#程序员如虎添翼。《C#揭秘》以 C#语言的预备知识开篇,最后以部署代码结束全书,全面深入地讲解了 .NET技术的各个知识点,在广度和深度上恰到好处。《C#揭秘》不仅系统地阐述了 C#开发相关的重要理论知识,而且还提供了大量的实例和解决常见问题的最佳方案,是 .NET开发人员必备的参考书。
《C#揭秘》适合于各层次的.NET开发人员阅读。
《C#揭秘》适合于各层次的.NET开发人员阅读。
比价列表
公众号、微信群

微信公众号

实时获取购书优惠