Следующий код позволяет мне сохранить значение для каждого типа T
:
public static class MyDict<T> {
public static T Value;
}
Я могу хранить столько значений, сколько есть типов, и компилятор не знает раньше, какие типы я буду использовать. Как и где хранятся эти значения статического поля?
Обновление: Очевидно, он хранится в памяти, но я хочу знать об этой памяти. Это куча? Это какая-то специальная память CLR? Как это называется? Что еще хранится таким образом?
Обновление 2:
JITter генерирует единую реализацию MyDict<__Canon>
для всех аргументов ссылочного типа MyDict<T>
. Тем не менее, значения хранятся отдельно. Я предполагаю, что для каждого аргумента типа есть еще какая-либо структура типа-типа. В то время как vtable связана с JITted MyDict<__Canon>
, поля являются отдельными. Я прав?