2012-09-28 3 views
4

을 나는 다음과 같은 코드를 가지고, 내가 나에게 4의 결과를 제공하기 위해 c을 기대하고 있습니다 채워 된 두 ab 이후널 병합 연산자

decimal? a = 2m; 
decimal? b = 2m; 
decimal c = a ?? 1m * b ?? 1m; 

합니다.

그러나 I 얻는 결과가 케이스 b1 대신 2으로 간주되는 2 이다.

이 문제의 원인은 누구에게 알 수 있습니까? 당신이 2의 가치를 얻을 이유

답변

4

표현은 작동합니다.

5

그룹은 4

decimal c = (a ?? 1m) * (b ?? 1m); 

현재 구문의 값을 얻으려면 값 조건 로 (

decimal c = a ?? (1m * b ?? 1m); 

과 이유로 평가 a)

3
decimal c = a ?? 1m * b ?? 1m; 
귀하의 경우 a

if (a != null) 
    c = a 
else 
    ... 

가 null는 아니고, 2의 값을 가지고 있으므로이 결과 :

는 같음. a으로

decimal c = a ?? (1m * b) ?? 1m; 

에 값이, 당신이 얻을 :