2014-10-16 3 views
0

Как найти Type типа значения в C#?Как определить Тип значений типов

Скажем, у меня есть:

string str; 
int value; 
double doubleValue; 

Есть метод, который возвращает тип любого из этих типов значений?

Чтобы яснее, я пытаюсь что-то вроде этого:

string str = "Hello"; 
string typeOfValue = <call to method that returns the type of the variable `str`> 

if (typeOfValue == "string") { 
    //do something 
} else { 
    //raise exception 
} 

Я хочу, чтобы получить ввод от пользователя и вызвать исключение, если введенное значение не string или int или double в зависимости от моих условий ,

Я попытался:

public class Test 
{ 
    public static void Main(string[] args) 
    { 
     int num; 
     string value; 
     Console.WriteLine("Enter a value"); 

     value = Console.ReadLine(); 
     bool isNum = Int32.TryParse(value, out num); 

     if (isNum) 
     { 
      Console.WriteLine("Correct value entered."); 

     } 
     else 
     { 
      Console.WriteLine("Wrong value entered."); 

     } 
     Console.ReadKey(); 
    } 
} 

но что, если тип значения я хочу проверить это string или что-то еще?

+0

'Object.GetType' ?! Но неясно, пользователь может ввести только строки. Таким образом, тип всегда является строкой. Если вы проанализируете его на тип номера, вы уже знаете тип во время компиляции. –

+3

Просто примечание стороны, 'string' не является типом значений – Habib

+2

Я не вижу * почему * вам это нужно здесь. Это может быть полезно, если у вас есть «Object», но строка, считанная с консоли, является строкой, и ничего больше, если вы ее не анализируете, тогда результат синтаксического анализа является известным типом в этой точке. – crashmstr

ответ

2

Вы можете использовать GetType на любой элемент в .Net, поскольку он существует на уровне объекта:

var myStringType = "string".GetType(); 
myStringType == typeof(string) // true 

GetType возвращает объект Type, вы можете получить удобное для чтения имя человека, используя свойство Name на Type.

0

GetType вернет правильный результат:

string typeOfValue = value.GetType().ToString(); 

Но в этом случае, вам не нужно преобразовать тип в строку для сравнения:

if (typeof(String) == value.GetType()) ... 
Смежные вопросы