문제

이 질문은 이미 여기에 답이 있습니다.

나는 궁금했다 ?? 표지판 C# 암호. 그것은 무엇입니까? 그리고 어떻게 사용할 수 있습니까?

는 어때 int?? 무효가 가능한 INT입니까?

또한보십시오:

?? Null Coalescing Operator -> Coalescing은 무엇을 의미합니까?

도움이 되었습니까?

해결책

"Null Coalescing Operator"라고하며 다음과 같이 작동합니다.

하는 대신 :

int? number = null;
int result = number == null ? 0 : number;

이제 그냥 할 수 있습니다 :

int result = number ?? 0;

다른 팁

그건 NULL 합병 연산자. C# 2에 소개되었습니다.

표현의 결과 a ?? b ~이다 a 그것이 null이 아닌 경우, 또는 b 그렇지 않으면. b 필요하지 않으면 평가되지 않습니다.

두 가지 좋은 것 :

  • 표현식의 전체 유형은 두 번째 피연산자의 유형이며, 이는 널리킹 가능한 값 유형을 사용할 때 중요합니다.

    int? maybe = ...;
    int definitely = maybe ?? 10;
    

    (널리킹 할 수없는 값 유형을 첫 번째 피연산자로 사용할 수는 없습니다. 무의미합니다.)

  • 연관성 규칙은 이것을 쉽게 쉽게 체인 할 수 있음을 의미합니다. 예를 들어:

    string address = shippingAddress ?? billingAddress ?? contactAddress;
    

배송, 청구 또는 연락처 주소에서 첫 번째 비 널 값을 사용합니다.

그것이 Coalesce 운영자입니다. 그것은 본질적으로 다음과 같은 속기입니다

x ?? new Student();
x != null ? x : new Student();

연산자에 대한 MSDN 문서

새로운 Null Coalesce 운영자입니다.

?? 연산자는 왼쪽 피연산자가 NULL이 아닌 경우 왼쪽 피연산자를 반환합니다. 그렇지 않으면 오른쪽 피연산자를 반환합니다.

여기에서 읽을 수 있습니다.http://msdn.microsoft.com/en-us/library/ms173224(vs.80).aspx

그것은 바로 가기입니다.

Text = (category == null ? "Home" : category);

Coalesce 운영자입니다. 첫 번째 값이 null이면 다른 값을 반환합니다.

string value1 = null;
string value2 = "other";

string value3 = value1 ?? value2; // assigns "other" to value 3

카테고리가 null인지 확인합니다.이 경우 널 값이 "홈"으로 대체됩니다.

Null Coalescing 연산자에게 내가 가장 좋아하는 용도 중 하나는 내 코드의 진술을 피하는 것입니다 (진술이 못 생겼고 대부분의 경우 일을 혼란스럽게 생각합니다). 예를 들어, 사용 가능한 경우 캐시에서 무언가를로드하기로 선택할 수있는 일반적인 시나리오를 사용하고 DB에서로드하고 캐시를 채우십시오.

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;

    if (data == null) {
        data = DAL.GetData(some parameters...);
        HttpRuntime.Cache.Add("key", data, ....);
    }

    return data;
}

나에게 그것은 추악한 코드입니다. 나는 약간 항문일지도 모르지만 대신 이것에 그것을 리팩터링하지 않는 이유는 무엇입니까?

private SomeData GetDataAndCache() {
    var data = DAL.GetData(some parameters...);
    HttpRuntime.Cache.Add("key", data, ....);
    return data;
}

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;
    return data ?? GetDataAndCache();
}

SRP를 더 밀접하게 따르고 더 깨끗하고 읽기 쉽습니다. IMO. 함수는 각각 명확하게 식별 할 수있는 기능을 정확하게 수행합니다.

카테고리가 null이면 텍스트가 "집"이됩니다.

첫 번째 널 값을 반환합니다. 능숙한.

?? 널 코일 스케팅 연산자

int? 무효화 할 수없는 int이므로 정상 int와 null의 값을 가질 수 있습니다. 읽다 이것 자세한 내용은.

그게 그게 널 코일 스케팅 연산자 . 함께 사용됩니다 무효 유형 (무엇보다도 죄송합니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top