您的位置:首页 > 编程语言 > C#

CLR via C# 读书笔记1-7

2013-05-10 15:04 176 查看
通用类型系统 Common Type System (CTS)

CLR 中的各种类型扮演了最终要的角色,它们决定了一种程序语言与另一种程序语言交互的机制。基于此点 Microsoft 建立一个规范—通用类型系统 Common Type System (CTS)—它描述了类型怎样定义及行为。

PS: Microsoft 已经向 ECMA 提交了 CTS (连同 .NET Framework 中的文件格式, metadata, IL,以及 P/Invoke) 作为一种规范的申请。这个规范称之为Common Language Infrastructure (CLI) 也就是 ECMA-335。另外Microsoft 也提交了 FCL, C# 程序语言(ECMA-334) 以及 C++/CLI 程序语言。

详情可参照 ECMA 官网: http://www.ecma-international.org

或者 Microsoft 官网:http://msdn.microsoft.com/en-us/netframework/aa569283.aspx http://www.microsoft.com/openspecifications/en/us/programs/community-romise/default.aspx.

CTS 规范指出一个类型可以包含0个或多个成员,以下是摘要:

■ 字段(Field)

■ 方法(Method)

■ 属性(Property)

■ 事件(Event)

CTS 也规范了各成员的可见类型:

■ Private: 仅对自身可见

■ Family: 仅对派生类可见(不管是否在同一程序集中),许多语言(如 C++, C#) 把这视为 protected

■ Family 及 Assembly: 仅对同一程序集中派生类可见,许多语言(如 C++, C#)不支持,IL Assembly 语言支持

■ Assembly: 仅对同一程序集中的类可见,许多语言视之为 internal

■ Family 或 assembly: 对派生类可见(不管是否在同一程序集中),对同一程序集中的类也可见。C# 视为 protected internal

■ Public 对所有程序集的所有类型都可见

CTS 还定义了类型继承,虚拟方法,对象生命期等规则,这些规则不需要死记硬背,许多规则你选择的开发语言已经限定了,另外的会提示你。比如 CTS 只允许继承自一个父类,而 C++ 允许继承自多个类,Microsoft’s C++/CLI 编译器在遇到这种情跨功能的时候就会提示一个编译错误。

这里还提一个 CTS 规则:所有类型都集成自一个预定义类型(System.Object)。

介于此所有的类型都具有以下的成员函数/功能:

■ 比较两个实例是否相等Compare two instances for equality.

■ 获取实例的 hash 值code for the instance.

■ 获取实例的类型

■ 对实例进行 shallow (bitwise) 拷贝

■ 获取实例当前状况的 string 表述
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: