is연산자가 약간 일치하지 않는 것 같습니다 .
bool Test()
{
// Returns false, but should return true.
return null is string;
}
null값이 참조 (또는 널 입력 가능) 유형에 속할 것으로 예상합니다 . 실제로 C # 언어 사양은이 가설을 지원하는 내용을 말합니다 (6.1.6 암시 적 참조 변환).
암시 적 참조 변환은 다음과 같습니다.
...
• null 리터럴에서 모든 참조 유형으로.
의 설명 (7.10.10는 IS 연산자) is표현식이 말하는하여 운영자 시작 (E is T)에서 참조 변환 할 때 진정한 발생합니다 E을이 T존재하지만 저자가 때 명시하는 경우를 제외하여 갈 E은 IS null문자 또는이 null값을 .
왜 그렇게합니까? 나에게는 그것은 직관이 아닌 것 같습니다.
null typeof Object거짓을 반환
null is string했다 true, 이것은 그 암시 null입니다 string. 또한 가정 null is Nullable<int>인 true것을 의미하는 것은, nullA는 Nullable<int>. 이제이 질문에 대답하십시오 : 어떤 유형 null입니까?