
一、.NET体系结构
对于C语言来说,可以得出两个重要的结论:
(1)C#的结构和方法论反映了.NET基础方法论。
(2)在许多情况下,C#的特定语言功能取决于.NET的功能,或依赖于.NET基类。由于这种依赖性,在开始编写C#程序前,了解.NET的体系结构和方法论就非常重要。
1.1 C#与.NET的关系
C#就其本身而言只是一种语言,尽管它是用于生成面向.NET环境的代码,但它本身不是.NET的一部分。.NET支持的一些特性,C#并不支持。而C#语言支持的另一些特性,.NET却不支持!
1.2 公共语言运行库(CLR)
在.NET中,编译分为两个阶段:
(1)把源代码编译为Microsoft中间语言(IL)。
(2)CLR把IL编译为平台专用的代码。
1.3 中间语言
中间语言的主要特征:
● 面向对象和使用接口
● 值类型和引用类型之间的显著差异
● 强数据类型化
● 使用异常来处理错误
● 使用特性(attribute)
1.4 程序集
1.5 .NET Framework 类
1.6 名称空间
名称空间是.NET避免类名冲突的一种方式。
1.7 用C#创建.NET应用程序
1.7.1 创建ASP.NET应用程序
1.7.2 创建Windows窗体
1.7.3 使用WPF
1.7.4 WindoWs控件
1.7.5 Windows服务
1.7.6 WCF
1.7.7 Windows WF
1.8 C#在.NET企业体系结构中的作用
C#和.NET至少提供了4个优点:
●组件冲突将很少见,部署工作将更容易,因为同一组件的不同版本可以在同一台计算机上并行运行,而不会发生冲突。
●ASP.NET代码不再难懂。
●可以利用.NET基类中的许多功能。
●利用C#可以很容易编写需要Windows窗体用户界面的应用程序。
二、核心C#
2.1 第一个C#程序
2.2 变量
var 类型推断
const 常量
2.3 预定义数据类型
2.3.1 值类型和引用类型
2.3.2 CTS类型
2.3.3 预定义的值类型
整型、浮点类型、decimal类型、bool类型、字符类型
2.3.4 预定义的引用类型
object、string
String对象被分配在堆上,而不是栈上。因此,当把一个字符串变量赋予另一个字符串时,会得到对内存中同一个字符串的两个引用。
2.4 流控制
2.4.1 条件语句
1) if语句
2) switch语句
2.4.2 循环
1) for循环
2) while循环
3) do...while循环
4) foreach循环
2.4.3 跳转语句
1) goto语句
2) break语句
3) continute语句
4) return语句
2.5 枚举
System.Enum
2.6 名称空间
2.7 Main()方法
C#是从方法Main()开始执行的。这个方法必须是类或结构的静态方法,并且其返回类型必须是int或void。
2.8 有关编译C#文件的更多内容
2.9 控制台I/O
2.10 使用注释
2.11 C#预处理器指令
#region name ,#endregion
#define symbol
#undef symbol
#if symbol [operator symbol2]...
#else
#elif symbol [operator symbol2]
#endif
#warning text text指在编译器输出中的警告文字
#error text text指在编译器输出中的错误信息
#line number [file]
2. 12 C#编程规则
三、对象和类型
3.1 类和结构
类和结构实际上都是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法。类定义了类的每个对象(称为实例)可以包含什么数据和功能。
较小的数据类型使用结构可提高性能。但在语法上,结构与类非常相似,主要的区别是使用关键字struct代替class来声明结构。
3.2 类
类中的数据和函数称为类的成员。
3.2.1 数据成员
数据成员是包含类的数据——字段、常量和事件的成员。数据成员可以是静态数据。类成员总是实例成员,除非用static进行显式的声明。
3.2.2 函数成员
函数成员提供了操作类中数据的某些功能,包括方法、属性、构造函数和终结器(finalizer)、运算符以及索引器。
3.3 匿名类型
3.4 结构
3.5 部分类
3.6 静态类
3.7 Object类
3.8 扩展方法
四、继承
4.1 继承的类型
4.1.1 实现继承和接口继承
4.2 实现继承
4.3 修饰符


4.4接口
五、泛型
5.1 概述
从值类型转换为引用类型称为装箱。
5.2 创建泛型类
5.3 泛型类的功能
5.4 泛型接口
5.5 泛型结构
六、数组
6.1 简单数组
数组的声明: int[] myArray;
数组的初始化: myArray = new int[4];
6.2 多维数组
数组的声明: int[,] twodim = new int[3,3];
数组的初始化: twodim[3,3] = {{1,2,3},{4,5,6},{7,8,9}};
6.3 锯齿数组
int[][] jagged = new int[3][];
jagged[0] = new int[2] {1,2};
jagged[1] = new int[6] {3,4,5,6,7,8};
jagged[2] = new int[3] {9,10,11};
6.4 Array类
6.5 数组作为参数
6.6 枚举
6.7 元组
6.8 结构比较
七、运算符和类型的强制转换
7.1 运算符
7.2 类型的安全性
7.3 比较对象的相等性
7.4 运算符重载
八、委托、Lambda表达式和事件
8.1 委托
8.2 Lambda表达式
8.3 事件
九、字符串和正则表达式
9.1 System.String类
9.2 正则表达式
十、集合
10.1 集合接口和类型
10.2 列表
10.3 队列
10.4 栈
10.5 链表
10.6 有序列表
10.7 字典
10.8 集
包含不重复元素的集合称为“集(set)”。
10.9 可观察的集合
10.10 位数组
10.11 并发集合
10.12 性能
十一、LINQ
语言集查询(Language Integrated Query,LINQ),集成了C#编程语言中的查询语法,可以用相同的语法访问不同的数据源。LINQ提供了不同数据源的抽象层,所以可以使用相同的语法。
11.1 LINQ概述
11.2 标准的查询操作符
11.3 并行LINQ
11.4 表达式树
11.5 LINQ提供程序
十二、动态语言扩展
12.1 DLR
12.2 dynamic类型
12.3 包含DLR ScriptRuntime
12.4 DynamicObject和ExpandoObject
十三、内存管理和指针
13.1 后台内存管理
13.2 释放非托管的资源
13.3 不安全的代码
十四、反射
14.1 自定义特性
14.2 反射
十五、错误和异常
15.1 异常类
15.2 捕获异常
15.3 用户定义的异常类
浙公网安备 33010602011771号