- CLR 公共语言运行库
执行给定编译代码单元所需的外部服务集合,它提供了一个定义明确的运行库层,可以被支持.NET的所有语言和平台所共享。
- 库
- mscoree.dll:公共对象运行库执行引擎
当用户程序引用一个程序集时,这个库将首先自动加载,然后由它负责将需要的程序集导入内存。
- 工作流程
- CTS 公共类型系统
CTS是一个正式的规范,它规定了类型必须如何定义才能被CLR承载。
- 类类型
这是OOP的基础,由成员和数据组成
- 特征
- 是否密封
- 是否实现接口
- 是具体的还是抽象的
- 可见性
- 语法
class Calc{……} |
- 接口类型
由抽象成员定义所组成的一个具名集合,通过特定的类或结构来实现。
- 语法
public interface IDraw{void Draw()} |
- 结构类型
可以看做是具有语义的轻量级类类型,适用于建模几何和数学数据
- 语法
struct Point{……} |
- 枚举类型
是一种便利的编程结构,用来组成名称/值对。
- 语法
enum CharacterType {Wizard = 100,Thief = 200} |
- 委托类型
等效于类型安全的C风格的函数指针。派生自System.MulticastDelegate类,而不是简单的指向原始内存地址的指针,为.NET事件架构提供了基础。
- 语法
delegate int BinaryOp(int x,int y); |
- 类型成员
类型成员是集合
- 组成
- 构造函数
- 终结器
- 静态构造函数
- 嵌套类型
- 操作符
- 方法
- 属性
- 索引器
- 字段
- 只读字段
- 常量
- 事件
- 可见性
- 公共的
- 私有的
- 受保护的
- 内建数据类型
CTS数据类型 | C#关键字 | CLI关键字 | 备注 |
System.Byte
|
byte | unsigned char | |
System.SByte
|
sbyte | signed char | |
System.Int16
|
short | short | |
System.Int32
|
int | int or long | |
System.Int64
|
long | _int64 | |
System.UInt16
|
ushort |
unsigned short
|
|
System.UInt32
|
uint |
unsigned int or unsigned long
|
|
System.UInt64
|
ulong |
unsigned _int64
|
|
System.Single
|
float | Float | |
System.Double
|
double | Double | |
System.Object
|
object | object^ | |
System.Char
|
char | wchar_t | |
System.String
|
string | String^ | |
System.Decimal
|
decimal | Decimal | |
System.Boolean
|
bool | Bool |
- CLS 公共语言规范
它清晰的描述了支持.NET的编译器必须支持的最小的和完全的特征集,可以被基于.NET平台的其他语言用统一的方式进行访问。
- 规则
- 规则1:CLS规则仅适用于类型中向定义它的程序集以外公开的部分。
- BCL 基础类库