ジェネリック型では、型引数に具体的な型が指定されているかどうかで型情報が変わります。 たとえばList<T>クラスを例にとった場合、型引数T
の型が具体的に定まっていないList<T>
を特にオープンジェネリック型(あるいはジェネリック型定義)、対してList<int>
やList<string>
など型引数T
の型が具体的な型が定まっているものをクローズジェネリック型(あるいは構築ジェネリック型、構築された型)と呼びます。
typeof
演算子・GetType
演算子でジェネリック型の型情報を取得する場合、オープンジェネリック型とクローズジェネリック型を区別して取得することができます。 オープンジェネリック型を表す場合は型パラメータの指定を省略した型名(例:Dictionary<,>
/Dictionary(Of ,)
)を使用し、一方クローズジェネリック型では具体的な型名を指定した型名(例:Dictionary<string, int>
/Dictionary(Of String, Integer)
)を使用することによってそれぞれの型情報を取得することができます。