나는 다음과 같은 코드가 있습니다왜 C#은 'var'가 null인지 확인 할 수 있습니까?
List<IMessage> messageList = new List<IMessage>();
foreach(var msg in messageList)
{
if(msg != null)
{
}
}
어떻게이 var
MSG null
에 대한을 확인 할 수 있습니까? 컴파일러에서 var
이 IMessage
이고 int
또는 nullable이 아닌 다른 형식이 아니라고 알려줍니다.
예제를 MSDN에서 보면 암시 적으로 입력 된 변수에 초기 값 (이에 따라 선언이 명시 됨)이 제공됩니다. 필자의 경우에는 그다지 가치가 없지만 컴파일러는 아무런 문제가 없다. 컴파일러는 msg
이 nullable인지 어떻게 알 수 있습니까?
당신의'messageList'는'IMessage' 타입의 아이템리스트입니다. 그래서 컴파일러는'msg'의 실제 타입이'IMessage'라고 쉽게 추측 할 수 있습니다. 컴파일러가 타입을 추론 할 수 없다면, 당신은'var'을 사용할 수 없을 것입니다. 'var msg;'는 허용되지 않습니다. – stuartd
'null'에 대한 값의 비교는 항상 허용됩니다. 컴파일러는 'msg'가'int' 인 경우 경고를 발행합니다. 왜냐하면 비교는 항상'true'이지만, 허용되지 않을 것입니다. –
@ JeroenMostert 값 유형에 대해 'null'을 검사하면 경고 이상이 발생합니다. 네가하는 말을 잘 모르겠다. – Snoopy