以下代码允许我为每种类型
我可以存储与类型数量相同的值,编译器不知道我将使用哪些类型。这些静态字段值存储在哪里?
更新: 显然它存储在内存中,但我想了解这个内存。它是堆吗?是一些特殊的CLR内存吗?它被称为什么?还有什么其他东西以这种方式存储?
更新2: JITter为MyDict的所有引用类型参数生成一个单独的实现MyDict<__Canon>。 然而,这些值是分别存储的。我想每个类型参数仍然有一些针对该类型参数的结构,虚函数表链接到JITted MyDict<__Canon>,而字段是单独的。 我是正确的吗?
T
存储一个值:public static class MyDict<T> {
public static T Value;
}
我可以存储与类型数量相同的值,编译器不知道我将使用哪些类型。这些静态字段值存储在哪里?
更新: 显然它存储在内存中,但我想了解这个内存。它是堆吗?是一些特殊的CLR内存吗?它被称为什么?还有什么其他东西以这种方式存储?
更新2: JITter为MyDict的所有引用类型参数生成一个单独的实现MyDict<__Canon>。 然而,这些值是分别存储的。我想每个类型参数仍然有一些针对该类型参数的结构,虚函数表链接到JITted MyDict<__Canon>,而字段是单独的。 我是正确的吗?
MyDict<T>
不是一个完全定义的类型。每个完全定义的MyDict<T>
类型将拥有自己独特的Value
实例(例如,MyDict<string>
、MyDict<object>
和MyDict<int>
可以具有唯一的Value
值)。我没有将这个作为答案,因为我觉得这并不是你要问的问题,但我认为这仍然是有用的。 - Brian Ball