C#中程序结构的关键概念为程序、命名空间、类型、成员和程序集。
C#程序包括一个或多个源文件。程序中声明类型,类型包含成员并能够被组织到命名空间中。类和接口是类型的例子。字段、方法、属性和事件则是成员的例子。当C#程序被编译的时候,他们被物理地打包到程序集中。
程序集包括中间语言(Intermediate Language,IL)指令形式的可执行代码,以及元数据(metadata)形式的符号信息。在它执行之前,程序集的IL代码将被.NET公共语言运行库(Common Language Runtime,CLR)自动转换成特定处理器的代码。
C#有两种类型:值类型(value type)和引用类型(reference type)。
值类型变量直接包括他们的数据,而引用类型变量储存的是它们的数据引用,后者被认为是对象。
对于引用类型,有可能两个变量引用相同的对象,因此对其中一个变量的操作可能影响另一个变量引用的对象。对于值类型,每个变量都有自己的数据拷贝,因此对一个变量的操作不可能影响其他变量(ref 和out 参数变量除外)。
C#值类型包括:简单类型(Simply Type)、枚举类型(Enum Type)和结构类型(Struct Type);
C#引用类型包括:类类型(Class Type)、接口类型(Interface Type)、数组类型(Array Type)和委托类型(Delegate Type)
类(Class)是C#最基础的类型。类是一个数据结构,将状态(字段)和行为(方法和其他成员)组合在一个单元中。类提供了用于动态创建类实例的定义,也就是对象(object)。
类的成员是静态成员(static member)或者是实例成员(instance member)。
静态成员属于类,实例成员属于对象(类的实例)。
成员
|
描述
|
常数 |
与类关联的常量值 |
字段 |
类的变量 |
方法 |
能够被类执行的行为和计算 |
属性 |
使对象能够读取和写入类的命名属性 |
索引器 |
使对象能够用与数组相同的方式进行索引 |
事件 |
能够被类产生的通知 |
运算符 |
类支持的转换和表达式运算符 |
构造函数 |
初始化类的实例或者类本身 |
析构函数 |
在永久销毁类的实例之前执行的行为 |
类型 |
被类声明的嵌套类型 |
可访问性
|
意义
|
public |
访问不受限制 |
protected |
访问仅限于包含类或从包含类派生的类型 |
internal |
访问仅限于当前程序集 |
protected internal |
访问仅限于从包含类派生的当前程序集或类型 |
private |
访问仅限于包含类 |