Если вы просто пытаетесь получить строку, описывающую тип объекта, вам просто нужно позвонить .GetType() вместо этого.
Например, небольшая функция, которая вернет имя строки типа объекта.
static string GetTypeString(object obj)
{
return obj.GetType().FullName;
}
Это вернется к полному пути к объекту. В случае int, он вернет System.Int32. Если вы хотите только часть Int32, используйте GetType(). Вместо имени.
Кроме того, вам не нужно иметь перерыв; в переключателе, если у вас есть возврат;
Если у вас есть определенный код, который должен быть запущен для некоторых типов или конкретная строка, которую вы хотите вернуть, вы можете использовать строку для значений, возвращаемых приведенным выше. Например:
static string GetSimpleType(object obj)
{
var stringRepresentation = GetTypeString(obj);
switch (stringRepresentation)
{
case "System.Int64":
case "System.Int32":
return "int";
default:
return stringRepresentation;
}
}
по умолчанию является уловкой всех в операторах switch для всего, что не имеет случая. Подумайте об этом, как о другом.
В приведенном выше примере мы возвращаем то же значение для int, Int32 и Int64. Ярлыки case могут просачиваться на другие ярлыки, если они пусты.
Вы можете найти все значения, необходимые для написания коммутатора, запустив простой скрипт и скопировав строковые значения, поскольку они всегда будут одинаковыми для тех же типов. Если строка отличается, тип отличается.
Наконец, если вы сравниваете типы, если и если еще работает лучше:
static string GetSimpleType(object obj)
{
if (obj.GetType() == typeof(int))
{
return "int";
}
return obj.GetType().ToString();
}
'ToString()' является метод, называемый во время выполнения. –
Даже 'typeof (int)' не будет возвращать значение const. Методы не гарантируют возвращаемое значение const. –
Возможно, вы захотите использовать 'readonly' вместо' const' и, возможно, посмотрите на 'Type' вместо' string'. –