类型定义和类型引用有什么区别?
What's the difference between type definition and type reference?
我正在阅读 Jeffrey Richter
的书 CLR via C#
。
在Chapter 23(23.3.2)
中表示"A System.Type object represents a type reference(as opposed to a type definition)."
这里的类型引用和类型定义是什么意思?
当您通过 class、结构、接口或枚举定义新类型时,就会发生类型定义。
类型引用是有关类型的信息集合,例如它的名称或其成员。
System.Type
class可以表示类型,但不能定义类型。
当您调用 typeof(TypeName)
或 object.GetType()
时,您将处理具有 System.Type
.
对象的类型表示
您不能仅使用 System.Type
对象直接实例化一个类型的对象。只描述类型,不描述是类型。这就是为什么它被称为参考。
一个类型定义暗示了该类型的实际实现,例如,如果它是一个class,则意味着[=19]的定义=](及其所有属性和字段)。
一个类型引用,简单的说就是System.Type
包含了一个特定类型的细节,也就是关于这个类型的元数据。
作者在对比System.Type
和System.TypeInfo
。来自 the documentation:
A TypeInfo object represents the type definition itself, whereas a Type object represents a reference to the type definition.
仅当实现 class(类型定义)的程序集已加载或可加载时,才能实例化 class 的 System.TypeInfo
。要实例化 System.Type
,唯一的要求是当前程序包含对实现程序集的 引用。
另见
我正在阅读 Jeffrey Richter
的书 CLR via C#
。
在Chapter 23(23.3.2)
中表示"A System.Type object represents a type reference(as opposed to a type definition)."
这里的类型引用和类型定义是什么意思?
当您通过 class、结构、接口或枚举定义新类型时,就会发生类型定义。
类型引用是有关类型的信息集合,例如它的名称或其成员。
System.Type
class可以表示类型,但不能定义类型。
当您调用 typeof(TypeName)
或 object.GetType()
时,您将处理具有 System.Type
.
您不能仅使用 System.Type
对象直接实例化一个类型的对象。只描述类型,不描述是类型。这就是为什么它被称为参考。
一个类型定义暗示了该类型的实际实现,例如,如果它是一个class,则意味着[=19]的定义=](及其所有属性和字段)。
一个类型引用,简单的说就是System.Type
包含了一个特定类型的细节,也就是关于这个类型的元数据。
作者在对比System.Type
和System.TypeInfo
。来自 the documentation:
A TypeInfo object represents the type definition itself, whereas a Type object represents a reference to the type definition.
仅当实现 class(类型定义)的程序集已加载或可加载时,才能实例化 class 的 System.TypeInfo
。要实例化 System.Type
,唯一的要求是当前程序包含对实现程序集的 引用。
另见