鉴于this MSDN文章,我们了解到.Net中的 Common Type System 具有引用类型的分类:
“参考类型可以是自描述类型,指针类型或接口类型。 可以从自描述类型的值确定引用类型的类型。自我描述类型进一步分为数组和类类型。“
答案 0 :(得分:3)
自描述类型是一种数据类型,它为垃圾收集器的好处提供有关自身的信息。基本上任何具有某种形式的元数据的类型,例如一个集会,将被视为一种自我描述的类型。
答案 1 :(得分:3)
自描述类型是由可用的元数据描述的类型。最常见的形式是类类型。在那里展示自我描述意味着很容易:
类型本身由类定义描述。例如具有名称,年龄和customerid的客户类。此类实例的纯数据类似于:
8%3|*1C U S T O M E R
仅因为环境具有包含元数据的类描述,您才真正知道其中一些数据形成了id,age和name。并且为了识别元数据,对象内容数据与类ID合并,以便环境可以将类描述与元数据匹配。
|Class metadata reference: Metadata for the customer class
| |Customer ID: Field
| | |Customer Age: Field
| | ||Customer Name : Field
8%3|*1C U S T O M E R
对于数组,它类似:数组类包含有关条目数的信息以及有关存储条目的类型信息(参见上文)。
答案 2 :(得分:3)
可能是显示指针类型和接口类型不自我描述的最佳方式,例如:
using System;
interface ISample { }
class CSample : ISample { }
class Program {
static unsafe void Main(string[] args) {
ISample itf = new CSample();
var it = itf.GetType();
Console.WriteLine(it.FullName);
int value = 42;
int* p = &value;
var pt = p->GetType();
Console.WriteLine(pt.FullName);
Console.ReadLine();
}
}
输出:
CSample
System.Int32
换句话说,声明为接口类型的对象只能描述实现它们的类。指针只能描述它们指向的对象的类型。