더하기 연산자 - `+`와 `+=`
더하기 연산자 - +와 +=
C#의 + 연산자는 숫자끼리 더할 때만 쓰는 게 아니에요. 기본 제공 정수형과 부동 소수점 숫자형, string 형, 그리고 delegate 형이 모두 + 연산자와 += 연산자를 지원합니다.
본문
[!INCLUDEcsharp-version-note]
산술적인 + 연산자에 대한 설명은 산술 연산자 문서의 단항 플러스·마이너스 연산자와 더하기 연산자 + 섹션에서 다루고 있으니 필요할 때 참고하세요.
문자열 연결
두 피연산자 중 하나라도 string 형이면, + 연산자는 피연산자들을 문자열로 바꿔 이어 붙여요. 이때 null의 문자열 표현은 빈 문자열입니다.
:::code language="csharp" source="snippets/shared/AdditionOperator.cs" id="AddStrings":::
문자열 보간([String interpolation])을 쓰면 문자열을 훨씬 편하게 만들 수 있어요.
:::code language="csharp" source="snippets/shared/AdditionOperator.cs" id="UseStringInterpolation":::
플레이스홀더에 들어가는 모든 식이 상수 문자열이라면, 문자열 보간을 이용해 상수 문자열을 초기화할 수도 있어요.
한 가지 더, + 연산자는 UTF-8 리터럴 문자열에도 문자열 연결을 수행해요. 이 경우 연산자가 두 ReadOnlySpan<byte> 개체를 이어 붙이죠.
대리자 결합
같은 delegate 형의 피연산자에 대해 + 연산자는 새 대리자 인스턴스를 반환하는데, 호출하면 왼쪽 피연산자를 먼저 호출하고 이어서 오른쪽 피연산자를 호출해요. 피연산자 중 하나가 null이면 + 연산자는 다른 쪽 피연산자의 값(이것 역시 null일 수 있어요)을 반환합니다. 다음 예시는 + 연산자로 대리자를 어떻게 결합하는지 보여줘요.
:::code language="csharp" source="snippets/shared/AdditionOperator.cs" id="AddDelegates":::
대리자를 제거할 때는 - 연산자를 사용하세요.
대리자 형에 대한 자세한 내용은 대리자 문서를 참고하세요.
더하기 대입 연산자 +=
+= 연산자를 쓰는 식, 이를테면
x += y
은 다음 식과 같아요.
x = x + y
단, x는 한 번만 계산(evaluate)된다는 차이가 있죠.
다음 예시는 += 연산자의 사용법을 보여줘요.
:::code language="csharp" source="snippets/shared/AdditionOperator.cs" id="AddAndAssign":::
이벤트를 구독할 때 이벤트 처리기 메서드를 지정하는 데도 += 연산자를 써요. 자세한 내용은 이벤트 구독·구독 해제 방법 문서를 확인하세요.
연산자 오버로드
사용자 정의 형은 + 연산자를 오버로드할 수 있어요. 이항 + 연산자를 오버로드하면 += 연산자도 함께 암시적으로 오버로드됩니다. C# 14부터는 사용자 정의 형이 += 연산자를 명시적으로 오버로드해 더 효율적인 구현을 제공할 수도 있어요. 보통 더하기 결과를 담을 새 인스턴스를 할당하는 대신 값을 제자리에서 갱신할 수 있기 때문에 형이 += 연산자를 오버로드하죠. 형이 명시적 오버로드를 제공하지 않으면 컴파일러가 암시적 오버로드를 생성합니다.
C# 언어 사양
자세한 내용은 C# 언어 사양의 단항 더하기 연산자와 더하기 연산자 섹션을 참고하세요. C# 14 이상에서 복합 대입 연산자를 오버로드하는 방법은 사용자 정의 복합 대입(user defined compound assignment) 기능 명세에서 다룹니다.