C# 4에서 ??
연산자를 사용하여 흥미로운 기능을 발견했습니다.C# 연산자`?? '는 어떻게 작동합니까?
searchForObject()
반환 값의 이미 null
경우 코드 의이 줄은 항상 그것이 LINQ 문을하지 않는 기능이며, 사실, existingObject
에 null을 할당 다음 if 문
existingObject = extstingObject ?? searchForObject();
사람이 이유를 설명 할 수 : 구조는 다음 existingObject이 NOT NULL 객체를 할당 할 경우) 간단한로 대체 할 것인가? 여기
는 MSDN에 a link, 그것은 말한다
널 (NULL) 유형 값을 포함 할 수 있거나,이 정의 될 수있다. The ?? 연산자는 Nullable 유형 이 Null을 허용하지 않는 유형에 할당 될 때 반환 될 기본값을 정의합니다. ?? nullable 값 형식을 사용하지 않고 nullable 값 형식에 할당하려고하면 ?? 연산자, 컴파일 타임 오류가 발생합니다. 캐스트를 사용하고 nullable 값 형식이 현재 정의되지 않은 경우 InvalidOperationException 예외가 발생합니다.
Null 허용 유형을 null이 허용되지 않는 유형에 할당하는 부분은 예상 한 것과 다릅니다.
문제 비주얼 스튜디오 디버거에서 로컬 변수의 초기화를 지연 하였다 2010
분명히 'searchForObject' 메소드는 null을 반환합니다. –
Typo가 있습니까 ?? – Jon
아마도'searchForObject()'가 항상 null을 반환하기 때문에/ – Aliostad