.NET如何区分引用与原始和值类型

5 .net compiler-construction

.NET我们有原始数据类型,如int和值类型,如struct.

我们也有参考类型.所有这些似乎都来自对象类.

.NET如何根据引用类型确定原始值类型?

它在哪里完成?在编译器或JIT?

这是否属于编译器的功能?

Cha*_*ana 11

所有值类型(包括内置公共类型系统(CTS)原语)都直接从CTS类型"System.ValueType"(枚举除外)派生.

所以编译器可以通过检查任何类型的基类型来判断.如果是"System.ValueType",则它是值类型,否则,它是引用类型.

编辑:枚举,如

public Enum Shipper {FedEx, Aerborne, USPS, Stork}
Run Code Online (Sandbox Code Playgroud)

...不直接从System.ValueType派生,它们派生自System.Enum,派生自System.ValueType ...