思维导图备注

C#7.0本质论
首页 收藏书籍 阅读记录
  • 书签 我的书签
  • 添加书签 添加书签 移除书签 移除书签

译者序

浏览 2 扫码
  • 小字体
  • 中字体
  • 大字体
2022-01-24 09:33:59
请 登录 再阅读
上一篇:
下一篇:
  • 书签
  • 添加书签 移除书签
  • 译者序
  • 推荐序
  • 前言
  • 致谢
  • 作者简介
  • 第1章 C#概述
    • 1.1 Hello,World
      • 1.1.1 创建、编辑、编译和运行C#源代码
      • 1.1.2 创建项目
      • 1.1.3 编译和执行
      • 1.1.4 使用本书源代码
    • 1.2 C#语法基础
      • 1.2.1 C#关键字
      • 1.2.2 标识符
      • 1.2.3 类型定义
      • 1.2.4 Main方法
      • 1.2.5 语句和语句分隔符
      • 1.2.6 空白
    • 1.3 使用变量
      • 1.3.1 数据类型
      • 1.3.2 变量的声明
      • 1.3.3 变量的赋值
      • 1.3.4 变量的使用
    • 1.4 控制台输入和输出
      • 1.4.2 将输出写入控制台
    • 1.5 注释
    • 1.6 托管执行和CLI
    • 1.7 多个.NET框架
      • 1.7.1 应用程序编程接口
      • 1.7.2 C#和.NET版本控制
      • 1.7.3 .NET Standard
    • 1.8 小结
  • 第2章 数据类型
    • 2.1 基本数值类型
      • 2.1.2 浮点类型(float和double)
      • 2.1.3 decimal类型
      • 2.1.4 字面值
    • 2.2 更多基本类型
      • 2.2.2 字符类型(char)
      • 2.2.3 字符串
    • 2.3 null和void
      • 2.3.2 void
    • 2.4 数据类型转换
      • 2.4.1 显式转型
      • 2.4.2 隐式转型
      • 2.4.3 不使用转型操作符的类型转换
    • 2.5 小结
  • 第3章 更多数据类型
    • 3.1 类型的划分
      • 3.1.1 值类型
      • 3.1.2 引用类型
    • 3.2 可空修饰符
    • 3.3 元组
    • 3.4 数组
      • 3.4.1 数组的声明
      • 3.4.2 数组实例化和赋值
      • 3.4.3 数组的使用
      • 3.4.4 字符串作为数组使用
      • 3.4.5 常见数组错误
    • 3.5 小结
  • 第4章 操作符和控制流程
    • 4.1 操作符
      • 4.1.1 一元正负操作符(+,-)
      • 4.1.2 二元算术操作符(+,-,*,/,%)
      • 4.1.3 复合赋值操作符(+=,-=,*=,/=,%=)
      • 4.1.4 递增和递减操作符(++,--)
      • 4.1.5 常量表达式和常量符号
    • 4.2 控制流程概述
      • 4.2.1 if语句
      • 4.2.2 嵌套if
    • 4.3 代码块({})
    • 4.4 代码块、作用域和声明空间
    • 4.5 布尔表达式
      • 4.5.1 关系操作符和相等性操作符
      • 4.5.2 逻辑操作符
      • 4.5.3 逻辑求反操作符(!)
      • 4.5.4 条件操作符(?:)
      • 4.5.5 空合并操作符(??)
      • 4.5.6 空条件操作符(?.)
    • 4.6 按位操作符(<<,>>,|,&,^,~)
      • 4.6.1 移位操作符(<<,>>,<<=,>>=)
      • 4.6.2 按位操作符(&,|,^)
      • 4.6.3 按位复合赋值操作符(&=,|=,^=)
      • 4.6.4 按位取反操作符
    • 4.7 控制流程语句(续)
      • 4.7.1 while和do/while循环
      • 4.7.2 for循环
      • 4.7.3 foreach循环
      • 4.7.4 基本switch语句
    • 4.8 跳转语句
      • 4.8.1 break语句
      • 4.8.2 continue语句
      • 4.8.3 goto语句
    • 4.9 C#预处理器指令
      • 4.9.1 排除和包含代码
      • 4.9.2 定义预处理器符号
      • 4.9.3 生成错误和警告(#error,#warning)
      • 4.9.4 关闭警告消息(#pragma)
      • 4.9.5 nowarn:<warn list>选项
      • 4.9.6 指定行号
      • 4.9.7 可视编辑器提示(#region,#endregion)
    • 4.10 小结
  • 第5章 方法和参数
    • 5.1 方法的调用
      • 5.1.1 命名空间
      • 5.1.2 类型名称
      • 5.1.3 作用域
      • 5.1.4 方法名称
      • 5.1.5 形参和实参
      • 5.1.6 方法返回值
      • 5.1.7 对比语句和方法调用
    • 5.2 方法的声明
      • 5.2.1 参数声明
      • 5.2.2 方法返回类型声明
      • 5.2.3 表达式主体方法
    • 5.3 using指令
      • 5.3.1 using static指令
      • 5.3.2 使用别名
    • 5.4 Main()的返回值和参数
    • 5.5 高级方法参数
      • 5.5.2 引用参数(ref)
      • 5.5.3 输出参数(out)
      • 5.5.4 只读传引用(in)
      • 5.5.5 返回引用
      • 5.5.6 参数数组(params)
    • 5.6 递归
    • 5.7 方法重载
    • 5.8 可选参数
    • 5.9 用异常实现基本错误处理
      • 5.9.1 捕捉错误
      • 5.9.2 使用throw语句报告错误
    • 5.10 小结
  • 第6章 类
    • 6.1 类的声明和实例化
    • 6.2 实例字段
      • 6.2.1 声明实例字段
      • 6.2.2 访问实例字段
    • 6.3 实例方法
    • 6.4 使用this关键字
    • 6.5 访问修饰符
    • 6.6 属性
      • 6.6.1 声明属性
      • 6.6.2 自动实现的属性
      • 6.6.3 属性和字段的设计规范
      • 6.6.4 提供属性验证
      • 6.6.5 只读和只写属性
      • 6.6.6 属性作为虚字段
      • 6.6.7 取值和赋值方法的访问修饰符
      • 6.6.8 属性和方法调用不允许作为ref或out参数值
    • 6.7 构造函数
      • 6.7.1 声明构造函数
      • 6.7.2 默认构造函数
      • 6.7.3 对象初始化器
      • 6.7.4 重载构造函数
      • 6.7.5 构造函数链:使用this调用另一个构造函数
      • 6.7.6 解构函数
    • 6.8 静态成员
      • 6.8.1 静态字段
      • 6.8.2 静态方法
      • 6.8.3 静态构造函数
      • 6.8.4 静态属性
      • 6.8.5 静态类
    • 6.9 扩展方法
    • 6.10 封装数据
      • 6.10.2 readonly
    • 6.11 嵌套类
    • 6.12 分部类
      • 6.12.1 定义分部类
      • 6.12.2 分部方法
    • 6.13 小结
  • 第7章 继承
    • 7.1 派生
      • 7.1.1 基类型和派生类型之间的转型
      • 7.1.2 private访问修饰符
      • 7.1.3 protected访问修饰符
      • 7.1.4 扩展方法
      • 7.1.5 单继承
      • 7.1.6 密封类
    • 7.2 重写基类
      • 7.2.1 virtual修饰符
      • 7.2.2 new修饰符
      • 7.2.3 sealed修饰符
      • 7.2.4 base成员
      • 7.2.5 构造函数
    • 7.3 抽象类
    • 7.4 所有类都从System.Object派生
    • 7.5 使用is操作符验证基础类型
    • 7.6 用is操作符进行模式匹配
    • 7.7 switch语句中的模式匹配
    • 7.8 使用as操作符进行转换
    • 7.9 小结
  • 第8章 接口
    • 8.1 接口概述
    • 8.2 通过接口实现多态性
    • 8.3 接口实现
      • 8.3.1 显式成员实现
      • 8.3.2 隐式成员实现
      • 8.3.3 显式与隐式接口实现的比较
    • 8.4 在实现类和接口之间转换
    • 8.5 接口继承
    • 8.6 多接口继承
    • 8.7 接口上的扩展方法
    • 8.8 通过接口实现多继承
    • 8.9 版本控制
    • 8.10 比较接口和类
    • 8.11 比较接口和特性
    • 8.12 小结
  • 第9章 值类型
    • 9.1 结构
      • 9.1.1 初始化结构
      • 9.1.2 使用default操作符
      • 9.1.3 值类型的继承和接口
    • 9.2 装箱
    • 9.3 枚举
      • 9.3.1 枚举之间的类型兼容性
      • 9.3.2 在枚举和字符串之间转换
      • 9.3.3 枚举作为标志使用
    • 9.4 小结
  • 第10章 合式类型
    • 10.1 重写object的成员
      • 10.1.2 重写GetHashCode()
      • 10.1.3 重写Equals()
      • 10.1.4 用元组重写GetHashCode()和Equals()
    • 10.2 操作符重载
      • 10.2.1 比较操作符(==,!=,<,>,<=,>=)
      • 10.2.2 二元操作符(+,-,*,/,%,&,|,^,<<,>>)
      • 10.2.3 二元操作符复合赋值(+=,-=,*=,/=,%=,&=…)
      • 10.2.4 条件逻辑操作符(&&,||)
      • 10.2.5 一元操作符(+,-,!,~,++,--,true,false)
      • 10.2.6 转换操作符
      • 10.2.7 转换操作符规范
    • 10.3 引用其他程序集
      • 10.3.1 引用库
      • 10.3.2 用Dotnet CLI引用项目或库
      • 10.3.3 用Visual Studio 2017引用项目或库
      • 10.3.4 NuGet打包
      • 10.3.5 用Dotnet CLI引用NuGet包
      • 10.3.6 用Visual Studio 2017引用NuGet包
      • 10.3.7 调用NuGet包
    • 10.4 定义命名空间
    • 10.5 XML注释
      • 10.5.1 将XML注释和编程构造关联
      • 10.5.2 生成XML文档文件
    • 10.6 垃圾回收
    • 10.7 资源清理
      • 10.7.2 使用using语句进行确定性终结
      • 10.7.3 垃圾回收、终结和IDisposable
    • 10.8 推迟初始化
    • 10.9 小结
  • 第11章 异常处理
    • 11.1 多异常类型
    • 11.2 捕捉异常
      • 11.2.1 重新抛出异常
    • 11.3 常规catch块
    • 11.4 异常处理规范
    • 11.5 自定义异常
    • 11.7 小结
  • 第12章 泛型
    • 12.1 如果C#没有泛型
    • 12.2 泛型类型概述
      • 12.2.1 使用泛型类
      • 12.2.2 定义简单泛型类
      • 12.2.3 泛型的优点
      • 12.2.4 类型参数命名规范
      • 12.2.5 泛型接口和结构
      • 12.2.6 定义构造函数和终结器
      • 12.2.7 指定默认值
      • 12.2.8 多个类型参数
      • 12.2.9 嵌套泛型类型
    • 12.3 约束
      • 12.3.1 接口约束
      • 12.3.2 类类型约束
      • 12.3.3 struct/class约束
      • 12.3.4 多个约束
      • 12.3.5 构造函数约束
      • 12.3.6 约束继承
    • 12.4 泛型方法
      • 12.4.1 泛型方法类型推断
      • 12.4.2 指定约束
    • 12.5 协变性和逆变性
      • 12.5.1 从C#4.0起使用out类型参数修饰符允许协变性
      • 12.5.2 从C#4.0起使用in类型参数修饰符允许逆变性
      • 12.5.3 数组对不安全协变性的支持
    • 12.6 泛型的内部机制
    • 12.7 小结
  • 第13章 委托和Lambda表达式
    • 13.1 委托概述
      • 13.1.1 背景
      • 13.1.2 委托数据类型
    • 13.2 声明委托类型
      • 13.2.1 常规用途的委托类型:System.Func和System.Action
      • 13.2.2 实例化委托
    • 13.3 Lambda表达式
      • 13.3.1 语句Lambda
      • 13.3.2 表达式Lambda
    • 13.4 匿名方法
      • 13.4.1 委托没有结构相等性
      • 13.4.2 外部变量
      • 13.4.3 表达式树
    • 13.5 小结
  • 第14章 事件
    • 14.1 使用多播委托编码Publish-Subscribe模式
      • 14.1.1 定义订阅者方法
      • 14.1.2 定义发布者
      • 14.1.3 连接发布者和订阅者
      • 14.1.4 调用委托
      • 14.1.5 检查空值
      • 14.1.6 委托操作符
      • 14.1.7 顺序调用
      • 14.1.8 错误处理
      • 14.1.9 方法返回值和传引用
    • 14.2 理解事件
      • 14.2.2 声明事件
      • 14.2.3 编码规范
      • 14.2.4 泛型和委托
      • 14.2.5 实现自定义事件
    • 14.3 小结
  • 第15章 支持标准查询操作符的集合接口
    • 15.1 集合初始化器
    • 15.2 IEnumerable<T>使类成为集合
      • 15.2.1 foreach之于数组
      • 15.2.2 foreach之于IEnumerable<T>
      • 15.2.3 foreach循环内不要修改集合
    • 15.3 标准查询操作符
      • 15.3.1 使用Where()来筛选
      • 15.3.2 使用Select()来投射
      • 15.3.3 使用Count()对元素进行计数
      • 15.3.4 推迟执行
      • 15.3.5 使用OrderBy()和ThenBy()来排序
      • 15.3.6 使用Join()执行内部联接
      • 15.3.7 使用GroupBy分组结果
      • 15.3.8 使用GroupJoin()实现一对多关系
      • 15.3.9 调用SelectMany()
      • 15.3.10 更多标准查询操作符
    • 15.4 匿名类型之于LINQ
      • 15.4.1 匿名类型
      • 15.4.2 用LINQ投射成匿名类型
      • 15.4.3 匿名类型和隐式局部变量的更多注意事项
    • 15.5 小结
  • 第16章 使用查询表达式的LINQ
    • 16.1 查询表达式概述
      • 16.1.1 投射
      • 16.1.2 筛选
      • 16.1.3 排序
      • 16.1.4 let子句
      • 16.1.5 分组
      • 16.1.6 使用into实现查询延续
      • 16.1.7 用多个from子句“平整”序列的序列
    • 16.2 查询表达式只是方法调用
    • 16.3 小结
  • 第17章 构建自定义集合
    • 17.1 更多集合接口
      • 17.1.1 IList<T>和IDictionary<TKey,TValue>
      • 17.1.2 ICollection<T>
    • 17.2 主要集合类
      • 17.2.2 全序
      • 17.2.3 搜索List<T>
      • 17.2.4 字典集合:Dictionary<TKey,TValue>
      • 17.2.5 已排序集合:SortedDictionary<TKey,TValue>和SortedList<T>
      • 17.2.6 栈集合:Stack<T>
      • 17.2.7 队列集合:Queue<T>
      • 17.2.8 链表:LinkedList<T>
    • 17.3 提供索引器
    • 17.4 返回null或者空集合
    • 17.5 迭代器
      • 17.5.1 定义迭代器
      • 17.5.2 迭代器语法
      • 17.5.3 从迭代器生成值
      • 17.5.4 迭代器和状态
      • 17.5.5 更多的迭代器例子
      • 17.5.6 将yield return语句放到循环中
      • 17.5.7 取消更多的迭代:yield break
      • 17.5.8 在一个类中创建多个迭代器
      • 17.5.9 yield语句的要求
    • 17.6 小结
  • 第18章 反射、特性和动态编程
    • 18.1 反射
      • 18.1.1 使用System.Type访问元数据
      • 18.1.2 成员调用
      • 18.1.3 泛型类型上的反射
      • 18.1.4 nameof操作符
    • 18.2 特性
      • 18.2.1 自定义特性
      • 18.2.2 查找特性
      • 18.2.3 使用构造函数初始化特性
      • 18.2.4 System.AttributeUsageAttribute
      • 18.2.5 具名参数
    • 18.3 使用动态对象进行编程
      • 18.3.1 使用dynamic调用反射
      • 18.3.2 dynamic的原则和行为
      • 18.3.3 为什么需要动态绑定
      • 18.3.4 比较静态编译和动态编程
      • 18.3.5 实现自定义动态对象
    • 18.4 小结
  • 第19章 多线程处理
    • 19.1 多线程处理基础
    • 19.2 使用System.Threading
      • 19.2.1 使用System.Threading.Thread进行异步操作
      • 19.2.2 线程管理
      • 19.2.3 生产代码不要让线程进入睡眠
      • 19.2.4 生产代码不要中断线程
      • 19.2.5 线程池处理
    • 19.3 异步任务
      • 19.3.1 从Thread到Task
      • 19.3.2 理解异步任务
      • 19.3.3 任务延续
      • 19.3.4 用AggregateException处理Task上的未处理异常
    • 19.4 取消任务
      • 19.4.1 Task.Run()是Task.Factory.StartNew()的简化形式
      • 19.4.2 长时间运行的任务
      • 19.4.3 对任务进行资源清理
    • 19.5 基于任务的异步模式
      • 19.5.1 以同步方式调用高延迟操作
      • 19.5.2 使用TPL异步调用高延迟操作
      • 19.5.3 通过async和await实现基于任务的异步模式
      • 19.5.4 异步Lambda和本地函数
      • 19.5.5 任务调度器和同步上下文
      • 19.5.6 async/await和Windows UI
      • 19.5.7 await操作符
    • 19.6 并行迭代
    • 19.7 并行执行LINQ查询
    • 19.8 小结
  • 第20章 线程同步
    • 20.1 线程同步的意义
      • 20.1.1 用Monitor同步
      • 20.1.2 使用lock关键字
      • 20.1.3 lock对象的选择
      • 20.1.4 为什么要避免锁定this、typeof(type)和string
      • 20.1.5 将字段声明为volatile
      • 20.1.6 使用System.Threading.Interlocked类
      • 20.1.7 多个线程时的事件通知
      • 20.1.8 同步设计最佳实践
      • 20.1.9 更多同步类型
      • 20.1.10 线程本地存储
    • 20.2 计时器
    • 20.3 小结
  • 第21章 平台互操作性和不安全代码
    • 21.1 平台调用
      • 21.1.1 声明外部函数
      • 21.1.2 参数的数据类型
      • 21.1.3 使用ref而不是指针
      • 21.1.4 为顺序布局使用StructLayoutAttribute
      • 21.1.5 错误处理
      • 21.1.6 使用SafeHandle
      • 21.1.7 调用外部函数
      • 21.1.8 用包装器简化API调用
      • 21.1.9 函数指针映射到委托
      • 21.1.10 设计规范
    • 21.2 指针和地址
      • 21.2.2 指针声明
      • 21.2.3 指针赋值
      • 21.2.4 指针解引用
      • 21.2.5 访问被引用物类型的成员
    • 21.3 通过委托执行不安全代码
    • 21.4 小结
  • 第22章 公共语言基础结构
    • 22.1 CLI的定义
    • 22.2 CLI的实现
    • 22.3 .NET Standard
    • 22.4 BCL
    • 22.5 C#编译成机器码
    • 22.6 运行时
      • 22.6.1 垃圾回收
      • 22.6.2 .NET的垃圾回收
      • 22.6.3 类型安全
      • 22.6.4 平台可移植性
      • 22.6.5 性能
    • 22.7 程序集、清单和模块
    • 22.8 公共中间语言
    • 22.9 公共类型系统
    • 22.10 公共语言规范
    • 22.11 元数据
    • 22.12 NET Native和AOT编译
    • 22.13 小结
暂无相关搜索结果!
    展开/收起文章目录

    二维码

    手机扫一扫,轻松掌上学

    《C#7.0本质论》电子书下载

    请下载您需要的格式的电子书,随时随地,享受学习的乐趣!
    EPUB 电子书

    书签列表

      阅读记录

      阅读进度: 0.00% ( 0/0 ) 重置阅读进度