대입 연산자(C# 참조)

대입 연산자 =은 오른쪽 피연산자의 값을 왼쪽 피연산자가 제공하는 변수, 속성 또는 인덱서 요소에 할당합니다. 대입식의 결과는 왼쪽 피연산자에 할당된 값입니다. 오른쪽 피연산자의 형식은 왼쪽 피연산자의 형식과 동일하거나 왼쪽 피연산자의 형식으로 암시적으로 변환할 수 있어야 합니다.

= 대입 연산자는 오른쪽 결합성입니다. 즉, 다음 형식의 식을 가정해 보세요.

a = b = c

이 식은 다음과 같이 계산됩니다.

a = (b = c)

다음 예제에서는 로컬 변수, 속성 및 인덱서 요소를 왼쪽 피연산자로 포함해서 대입 연산자를 사용하는 방법을 보여 줍니다.

var numbers = new List<double>() { 1.0, 2.0, 3.0 };

Console.WriteLine(numbers.Capacity);
numbers.Capacity = 100;
Console.WriteLine(numbers.Capacity);
// Output:
// 4
// 100

int newFirstElement;
double originalFirstElement = numbers[0];
newFirstElement = 5;
numbers[0] = newFirstElement;
Console.WriteLine(originalFirstElement);
Console.WriteLine(numbers[0]);
// Output:
// 1
// 5

ref 대입 연산자

C# 7.3부터 ref 대입 연산자 = ref를 사용하여 ref 지역 또는 ref readonly 지역 변수를 다시 할당할 수 있습니다. 다음 예제에서는 ref 대입 연산자의 사용법을 보여 줍니다.

void Display(double[] s) => Console.WriteLine(string.Join(" ", s));

double[] arr = { 0.0, 0.0, 0.0 };
Display(arr);

ref double arrayElement = ref arr[0];
arrayElement = 3.0;
Display(arr);

arrayElement = ref arr[arr.Length - 1];
arrayElement = 5.0;
Display(arr);
// Output:
// 0 0 0
// 3 0 0
// 3 0 5

ref 대입 연산자의 경우 양쪽 피연산자의 형식이 같아야 합니다.

복합 할당

이진 연산자(op)의 경우 양식의 복합 할당 식

x op= y

위의 식은 아래의 식과 동일합니다.

x = x op y

단, x가 한 번만 계산됩니다.

복합 할당은 산술, 부울 논리, 비트 논리 및 시프트 연산자를 통해 지원됩니다.

null 병합 할당

C# 8.0부터 null 병합 할당 연산자 ??=를 사용하여 왼쪽 피연산자가 null로 계산되는 경우에만 오른쪽 피연산자의 값을 왼쪽 피연산자에 대입할 수 있습니다. 자세한 내용은 ?? 및 ??= 연산자 문서를 참조하세요.

연산자 오버로드 가능성

사용자 정의 형식은 대입 연산자를 오버로드할 수 없습니다. 그러나 사용자 정의 형식은 다른 형식으로 암시적 변환을 정의할 수 있습니다. 이렇게 하면 사용자 정의 형식의 값을 다른 형식의 변수, 속성 또는 인덱서 요소에 할당할 수 있습니다. 자세한 내용은 사용자 정의 변환 연산자를 참조하세요.

사용자 정의 형식은 복합 대입 연산자를 명시적으로 오버로드할 수 없습니다. 그러나 사용자 정의 형식이 이항 연산자 op를 오버로드하는 경우에는 op= 연산자(있는 경우)도 암시적으로 오버로드됩니다.

C# 언어 사양

자세한 내용은 C# 언어 사양대입 연산자 섹션을 참조하세요.

ref 대입 연산자 = ref에 대한 자세한 내용은 기능 제안 노트를 참조하세요.

참고 항목