Where does .Net store the values of the static fields of generic types?

Viewed 1106

The following code allows me to store a value for each type T:

public static class MyDict<T> {
    public static T Value;
}

I can store as many values as there are types and the compiler doesn't know before-head what types I'm going to use. How and where are those static field values stored?

Update: Obviously it's stored in memory, but I want to know about this memory. Is it heap? Is it some special CLR memory? How is it called? What else is stored that way?

Update 2: JITter generates a single implementation MyDict<__Canon> for all reference type arguments of MyDict<T>. Yet, the values are stored separately. I guess that there is still some per-type-argument structure for each type argument, and while thw vtable is linked to the JITted MyDict<__Canon>, the fields are separate. Am I right?

2 Answers
Related