typeof для открытого типа
Запись typeof(List<>) получает открытое
определение: имя содержит обратную кавычку
и число параметров. Для закрытого типа
typeof(List<int>) имя совпадает, а
FullName дополнительно перечисляет
аргументы. Так различают «шаблон» списка
и список конкретного типа.
Синтаксис
Type open = typeof(List<>);
Type closed = typeof(List<int>);
Пример
Давайте выведем Name открытого типа List<>:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var open = typeof(List<>);
Console.WriteLine(open.Name);
}
}
Результат выполнения кода:
"List`1"
Пример
Давайте сравним имя закрытого List<int>:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var closed = typeof(List<int>);
Console.WriteLine(closed.Name);
}
}
Результат выполнения кода:
"List`1"
Пример
Давайте выведем FullName открытого и закрытого типа:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
string open = typeof(List<>).FullName;
string closed = typeof(List<int>).FullName;
Console.WriteLine(open == closed ? "same" : "diff");
}
}
Результат выполнения кода:
"diff"
Смотрите также
-
typeof,
который возвращает метаданные типа -
List,
который является обобщённым классом -
параметр типа,
который объявляетTв коде -
GetType,
который получает тип экземпляра во время выполнения