2014-10-16 4 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

'문자열'은 값 유형이 아닙니다. – Habib

+2

여기 * 왜 * 필요하지는 않습니다. 이것은'Object'가있는 경우에 유용 할 수 있습니다. 그러나 콘솔에서 읽은 문자열은 문자열이며, 구문 분석하지 않으면 아무것도 없습니다. 그런 다음 구문 분석 결과는 그 시점에서 알려진 유형입니다. – crashmstr

답변

2

당신은에 GetType를 사용할 수 있습니다

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

그러나이 경우에, 당신은 비교를 위해 문자열로 형식을 변환 할 필요가 없습니다

오브젝트 레벨에 존재하기 때문에 .Net의 모든 요소 :

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

GetType이 Type 개체를 반환하면 TypeName 속성을 사용하여 사람이 읽기 쉬운 이름을 얻을 수 있습니다.

0

GetType는 올바른 결과를 반환합니다

if (typeof(String) == value.GetType()) ...