2013-06-06 1 views

답변

20

사용 ?? 운영자

foo ?? new Foo(); 

또는 귀하의 경우

var myVar = returnObjectOrNull() ?? new MyObject(); 

을에

? 연산자는 null 합치기 연산자라고하며 nullable 값 형식 또는 참조 형식에 대한 기본값을 정의하는 데 사용됩니다. 그것은 피연산자가 null이 아니면 왼쪽 피연산자를 반환합니다. 그렇지 않으면 은 오른쪽 피연산자를 반환합니다.

2

사용

var myVar = returnObjectOrNull(); 

myVar = myVar ?? new MyObject(); 
1

예, 그것은 null coalescing operator이라고한다 널 병합 연산자 :

var myVar = returnObjectOrNull() ?? new MyObject(); 

참고이 연산자는 것 평가 없음 왼쪽 편이 null이 아니면 오른쪽면을 말하십시오. 이는 위의 코드 줄이 새로운 MyObject를 만들지 않는 한 만들지 않는다는 것을 의미합니다.

void Main() 
{ 
    var myVar = returnObjectOrNull() ?? new MyObject(); 
} 

public MyObject returnObjectOrNull() 
{ 
    return new MyObject(); 
} 

public class MyObject 
{ 
    public MyObject() 
    { 
     Debug.WriteLine("MyObject created"); 
    } 
} 

이 출력됩니다 "MyObject를 만들어"한번의 returnObjectOrNull 방법에서, 생성되는 하나의 개체 만이 의미가 아니라 하나를 ?? 문 :

여기에 예를 들어 LINQPad 프로그램이 보여입니다 선.

0

?? Operator (C# Reference)과 같은 연산자를 사용할 수 있습니다.

var myVar = returnObjectOrNull() ?? new MyObject(); 

?? 오퍼레이터는 널 유착 운영자라고하며 널 값 유형 또는 참조 타입에 대한 디폴트 값을 정의 에 사용된다. 그것은 피연산자가 null이 아니면 왼쪽 피연산자를 반환합니다. 그렇지 않으면 은 오른쪽 피연산자를 반환합니다.

+0

모두에게 동일한 답변이 있습니다. 그것은 모두 복사하여 붙여 넣은 다음 자신의 답변을 제출 한 것과 같습니다. –

+3

정말 단 하나의 답변 만 있으므로 모든 사람의 대답이 거의 동일하다는 것은 놀라운 일이 아닙니다. – LlamaCloud

+1

@PatrickMagee 사실, 너무 정상입니다. 이것은 기본적인 질문이며 모든 대답에는 긴밀한 타임 스탬프가 있습니다. 이 질문처럼 http://stackoverflow.com/questions/6201734/c-sharp-stored-procedure-with-parameters 너무 정상적인 Stackoverflow입니다. –

관련 문제