В .NET это действительно:
class X<T>
{
}
class X<T, U>
{
}
число общих параметров «меняет» имя класса. Таким образом, число, которое вы видите, является количеством параметров (если использовать более простые слова: классы / интерфейсы / структуры могут быть «перегружены» на число общих параметров, поэтому вы можете иметь IEnumerable
и IEnumerable<T>
.)
Эти классы будут называться X`1
и X`2
, и вы получите
typeof(X<>).Name == "X`1";
typeof(X<,>).Name == "X`2";
Обратите внимание, что имя общих параметров не "меняет" имя класса. После двух предыдущих определений это будет недействительным:
class X<U>
{
}