CLR via C# 读书笔记1-7

本文介绍了通用类型系统(Common Type System, CTS)的基本概念及其在CLR中的作用。详细解释了CTS如何规定类型成员及其可见性,并概述了CTS定义的类型继承、虚拟方法等规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通用类型系统 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 表述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值