2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

C#에서 null 병합 연산자(??)의 사용법은?

_____
Q1: C 에서 null 병합 연산자(??)란 무엇인가요?
A1: null 병합 연산자(??)는 왼쪽 피연산자가 null이 아니면 그 값을 반환하고, null인 경우 오른쪽 피연산자를 반환하는 연산자입니다. 즉, null일 가능성이 있는 값을 다룰 때 기본값을 쉽게 지정할 수 있도록 도와줍니다.

---

Q2: null 병합 연산자의 기본 문법은 어떻게 되나요?
A2:
```csharp
var result = nullableValue ?? defaultValue;
```
`nullableValue`가 null이 아니면 그 값이 `result`에 할당되고, null이면 `defaultValue`가 할당됩니다.

---

Q3: null 병합 연산자를 사용하는 예제 코드를 보여주세요.
A3:
```csharp
string input = null;
string output = input ?? "기본값";
Console.WriteLine(output); // 출력: 기본값
```

---

Q4: null 병합 연산자는 어떤 상황에서 주로 사용되나요?
A4:
- null 가능성이 있는 변수에 기본값을 설정할 때
- 메서드 반환값이 null일 때 대체값 지정
- 복잡한 null 체크를 간단히 할 때

---

Q5: null 병합 연산자의 오른쪽 피연산자는 어떤 타입이 될 수 있나요?
A5:
왼쪽 피연산자와 대입 대상의 타입과 호환되는 임의의 값 또는 표현식이 올 수 있습니다. 일반적으로 오른쪽 피연산자는 왼쪽 값이 null일 때 사용할 기본값입니다.

---

Q6: null 병합 연산자는 null 조건부 연산자(?.)와 함께 사용할 수 있나요?
A6:
네, 다음과 같이 종종 함께 사용합니다.
```csharp
string name = person?.Name ?? "이름 없음";
```
`person`이나 `person.Name`이 null일 경우 "이름 없음"을 반환합니다.

---

Q7: null 병합 연산자는 중첩해서 사용할 수 있나요?
A7:
네, 여러 값을 순차적으로 체크할 때 사용할 수 있습니다.
```csharp
string value = a ?? b ?? c ?? "기본값";
```
`a`부터 순서대로 null 체크하며 첫 번째 null이 아닌 값을 반환합니다.

---

Q8: null 병합 연산자와 삼항 연산자(?:)의 차이는 무엇인가요?
A8:
- `??`는 오직 null 여부만 검사합니다.
- `?:`는 조건식 결과(true/false)에 따라 값을 선택합니다.
따라서 null 체크만 할 땐 `??`가 더 간결하고 직관적입니다.

---

Q9: null 병합 연산자의 평가 순서는 어떻게 되나요?
A9:
왼쪽 표현식을 먼저 평가합니다. 만약 null이 아니면 그 값을 반환하고, null이면 오른쪽 표현식을 평가하여 반환합니다. 따라서 오른쪽 표현식은 왼쪽이 null일 때만 평가됩니다(지연평가).

---

Q10: null 병합 연산자의 타입 추론에 유의할 점이 있나요?
A10:
왼쪽과 오른쪽 피연산자의 타입이 다르면 컴파일 오류가 발생할 수 있으므로, 타입 호환에 유의해야 합니다. 예를 들어,
```csharp
int? a = null;
string b = "test";
var c = a ?? b; // 오류 발생
```
이 경우 두 값의 타입이 달라 에러가 납니다.

---

이상으로 C 의 null 병합 연산자(??) 사용법에 대한 FAQ였습니다.
C 에서 null 병합 연산자(??)는 null 값 처리에 매우 유용한 기능으로, 주로 nullable 타입이나 객체의 값이 null일 때 대체 값을 제공하는 데 사용됩니다.

이 연산자는 C

2.0부터 도입되었으며, 코드의 가독성을 높이고 null 체크를 간소화하는 데 기여합니다.

기본 사용법 null 병합 연산자는 다음과 같은 형식으로 사용됩니다: ```csharp var result = value1 ?? value2; ``` 여기서 `value1`이 null이 아닌 경우 `result`는 `value1`의 값을 가지며, `value1`이 null인 경우 `result`는 `value2`의 값을 가집니다.

이 연산자는 `value1`이 null인지 확인하는 조건문을 작성하는 것보다 훨씬 간결하고 읽기 쉽게 코드를 작성할 수 있게 해줍니다.

예제 다음은 null 병합 연산자를 사용하는 간단한 예제입니다: ```csharp string userInput = null; string defaultValue = "기본값"; string result = userInput ?? defaultValue; Console.WriteLine(result); // 출력: 기본값 ``` 위의 예제에서 `userInput`이 null이기 때문에 `result`는 `defaultValue`의 값인 "기본값"을 가지게 됩니다.

여러 개의 null 병합 연산자 사용하기 null 병합 연산자는 여러 번 연속해서 사용할 수 있습니다.

이 경우, 왼쪽에서 오른쪽으로 평가되며, 첫 번째 null이 아닌 값을 반환합니다.

```csharp string value1 = null; string value2 = null; string value3 = "첫 번째 값"; string value4 = "두 번째 값"; string result = value1 ?? value2 ?? value3 ?? value4; Console.WriteLine(result); // 출력: 첫 번째 값 ``` 위의 예제에서 `value1`과 `value2`는 null이므로, `value3`의 값인 "첫 번째 값"이 `result`에 할당됩니다.

Nullable 타입과 함께 사용하기 null 병합 연산자는 nullable 타입과 함께 사용할 때도 유용합니다.

예를 들어, `int?`와 같은 nullable 정수형 변수를 사용할 때, null인 경우 기본값을 제공할 수 있습니다.

```csharp int? nullableInt = null; int defaultInt = 10; int result = nullableInt ?? defaultInt; Console.WriteLine(result); // 출력: 10 ``` 위의 예제에서 `nullableInt`가 null이기 때문에 `result`는 `defaultInt`의 값인 10이 됩니다.

null 병합 할당 연산자 (??=) C

8.0부터는 null 병합 할당 연산자(??=)도 도입되었습니다.

이 연산자는 변수가 null일 때만 값을 할당하는 데 사용됩니다.

```csharp string name = null; name ??= "기본 이름"; Console.WriteLine(name); // 출력: 기본 이름 ``` 위의 예제에서 `name`이 null이므로 "기본 이름"이 할당됩니다.

만약 `name`이 이미 다른 값으로 초기화되어 있었다면, 값은 변경되지 않습니다.

결론 C 의 null 병합 연산자(??)는 null 값을 간편하게 처리할 수 있는 강력한 도구입니다.

이를 통해 코드의 가독성을 높이고, null 체크를 간소화할 수 있습니다.

또한, null 병합 할당 연산자(??=)를 사용하면 변수의 null 상태에 따라 조건부로 값을 할당할 수 있어 더욱 유용합니다.

이러한 기능들을 활용하여 안전하고 효율적인 코드를 작성할 수 있습니다.

작성자: 최민수 [비회원] | 작성일자: 1년 전 2024-09-09 08:38:57
조회수: 266 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.