을 나는 다음과 같은 코드를 가지고, 내가 나에게 4의 결과를 제공하기 위해 c
을 기대하고 있습니다 채워 된 두 a
및 b
이후널 병합 연산자
decimal? a = 2m;
decimal? b = 2m;
decimal c = a ?? 1m * b ?? 1m;
합니다.
그러나 I 얻는 결과가 케이스 b
1 대신 2으로 간주되는 2 이다.
이 문제의 원인은 누구에게 알 수 있습니까? 당신이 2
의 가치를 얻을 이유
을 나는 다음과 같은 코드를 가지고, 내가 나에게 4의 결과를 제공하기 위해 c
을 기대하고 있습니다 채워 된 두 a
및 b
이후널 병합 연산자
decimal? a = 2m;
decimal? b = 2m;
decimal c = a ?? 1m * b ?? 1m;
합니다.
그러나 I 얻는 결과가 케이스 b
1 대신 2으로 간주되는 2 이다.
이 문제의 원인은 누구에게 알 수 있습니까? 당신이 2
의 가치를 얻을 이유
표현은 작동합니다.
그룹은 4
decimal c = (a ?? 1m) * (b ?? 1m);
현재 구문의 값을 얻으려면 값 조건 로 (
decimal c = a ?? (1m * b ?? 1m);
과 이유로 평가 a
)
decimal c = a ?? 1m * b ?? 1m;
귀하의 경우
a
에
if (a != null)
c = a
else
...
가 null는 아니고, 2
의 값을 가지고 있으므로이 결과 :
는 같음. a
으로
decimal c = a ?? (1m * b) ?? 1m;
에 값이, 당신이 얻을 :