+In .NET, generic code instantiated over reference type is shared across all reference typed instantiations (for example, the code to support `List<string>` and `List<object>` is the same). However, additional native data structures are needed to express the "generic context" (the thing that gets substituted for `T`). It is possible to form generic recursion within these data structures as well. For example, this can happen if the generic context for `Foo<T>` needs to refer to `Foo<Foo<T>>` that in turn needs `Foo<Foo<Foo<T>>>`.
0 commit comments