前言1
第1章 C#和.NET Framework简介7
1.1 面向对象7
1.2 类型安全性8
1.3 内存管理9
1.4 平台支持9
1.5 C#和CLR9
1.6 CLR和.NET Framework10
1.7 其他框架11
1.7.1遗留框架和小众框架12
1.7.2 Windows Runtime12
1.8 C#简史13
1.8.1 C# 7.0新特性14
1.8.2 C# 6.0新特性17
1.8.3 C# 5.0新特性18
1.8.4 C# 4.0新特性19
1.8.5 C# 3.0新特性19
1.8.6 C# 2.0新特性20
第2章 C#语言基础21
2.1 第一个C#程序21
2.2 语法24
2.2.1 标识符和关键字24
2.2.2 字面量、标点与运算符26
2.2.3 注释26
2.3 类型基础27
2.3.1 预定义类型示例27
2.3.2 自定义类型示例28
2.3.3 转换30
2.3.4 值类型与引用类型31
2.3.5 预定义类型分类34
2.4 数值类型35
2.4.1 数值字面量36
2.4.2 数值转换38
2.4.3 算术运算符39
2.4.4 自增和自减运算符39
2.4.5 特殊整数类型运算39
2.4.6 8位和16位整数类型41
2.4.7 特殊的float和double值41
2.4.8 double和decimal的对比42
2.4.9 实数的舍入误差43
2.5 布尔类型和运算符43
2.5.1 布尔类型转换43
2.5.2 相等和比较运算符44
2.5.3 条件运算符44
2.6 字符串和字符45
2.6.1 char转换46
2.6.2 字符串类型46
2.7 数组48
2.7.1 默认数组元素初始化49
2.7.2 多维数组49
2.7.3 简化数组初始化表达式51
2.7.4 边界检查52
2.8 变量和参数52
2.8.1 栈和堆52
2.8.2 明确赋值54
2.8.3 默认值54
2.8.4 参数55
2.8.5 引用局部变量(C# 7)61
2.8.6 引用返回值(C# 7)61
2.8.7 var隐式类型局部变量61
2.9 表达式和运算符62
2.9.1 基础表达式63
2.9.2 空表达式63
2.9.3 赋值表达式63
2.9.4 运算符优先级和结合性64
2.9.5 运算符表64
2.10 null运算符68
2.10.1 null合并运算符68
2.10.2 null条件运算符(C# 6)68
2.11 语句69
2.11.1 声明语句69
2.11.2 表达式语句70
2.11.3 选择语句71
2.11.4 迭代语句75
2.11.5 跳转语句77
2.11.6其他语句78
2.12 命名空间79
2.12.1 using指令80
2.12.2 using static指令(C# 6)80
2.12.3 命名空间中的规则81
2.12.4 类型和命名空间别名83
......