2013-03-06 1 views
5

나는char에서 int를 할당 할 수 있습니까?

int number = 'a'; 

는 사운드의 C# 문

인가주의 그러나 표현이

typeof(int).IsAssignableFrom(typeof(char)) 

false를 돌려줍니다. 이것은 모순이 아닌가?

+0

'a'는 컴파일러에 의해 int로 변환되므로 그렇지 않습니다. – Sinatr

+0

'int'는'char'에서 할당 할 수 없습니다. 그런 식으로 완전히 다른 암시 적 변환이 있습니다. –

답변

13

모순이 아닙니까?

아니요. C#을 char에서 int에 암시 적 변환을 제공하지만, 당신이 Type.IsAssignableFrom에 대한 문서를 보면이 반환 값 상태 : C와 현재 Type이 같은 유형을 나타내는 경우, 또는

사실은 현재 유형 인 경우 또는 현재 Type이 c가 구현하는 인터페이스이거나 c가 제네릭 형식 매개 변수이고 현재 Type이 c의 제약 조건 중 하나를 나타내거나 c가 값 형식을 나타내고 현재 Type이 Nullable<c>을 나타냅니다. 조건이 true가 아닌 경우, 또는 c가 null의 경우는 false

해당 조건이 없으므로 false을 반환합니다.

+0

[유형 A가 암시 적으로 유형 B로 변환 될 수 있는지 확인하는 방법] (http://stackoverflow.com/questions/2224266/how-to- 타입에 대한 암시 적 변환 가능 유형 b) – Justin

+0

감사합니다. 이 방법은 제안 된 이름보다 훨씬 복잡합니다. –

1

당신이 묻는 질문은 약간 다릅니다. C#의 할당 가능 집합 은 일반적으로 CLR에 할당 할 수있는 유형 집합보다 더 허용 적입니다.

관련 문제