C# 연산자(C# 참조)C# operators (C# reference)

C#은 기본 제공 형식에서 지원되는 미리 정의된 여러 연산자를 제공합니다.C# provides a number of predefined operators supported by the built-in types. 예를 들어 산술 연산자는 기본 제공 숫자 형식의 피연산자를 사용하여 산술 연산을 수행하고 부울 논리 연산자bool 피연산자를 사용하여 논리 연산을 수행합니다.For example, arithmetic operators perform arithmetic operations with operands of built-in numeric types and Boolean logical operators perform logical operations with the bool operands.

사용자 정의 형식은 특정 연산자를 오버로드하여 해당 형식의 피연산자에 대한 해당 동작을 정의할 수 있습니다.A user-defined type can overload certain operators to define the corresponding behavior for the operands of that type. 자세한 내용은 연산자 키워드 문서를 참조하세요.For more information, see the operator keyword article.

다음 섹션에서는 우선순위가 가장 높은 것부터 시작하여 순서대로 C# 연산자를 나열합니다.The following sections list the C# operators starting with the highest precedence to the lowest. 각 섹션 내의 연산자는 동일한 우선 순위 수준을 공유합니다.The operators within each section share the same precedence level.

기본 연산자Primary operators

우선 순위가 가장 높은 연산자입니다.These are the highest precedence operators.

x.y – 멤버 액세스x.y – member access.

x?.y – null 조건부 멤버 액세스x?.y – null conditional member access. 왼쪽 피연산자가 null로 확인되면 null을 반환합니다.Returns null if the left-hand operand evaluates to null.

x?[y] - null 조건부 배열 요소 또는 형식 인덱서 액세스.x?[y] - null conditional array element or type indexer access. 왼쪽 피연산자가 null로 확인되면 null을 반환합니다.Returns null if the left-hand operand evaluates to null.

f (x) - 메서드 호출 또는 대리자 호출.f(x) – method call or delegate invocation.

[x] – 배열 요소 또는 형식 인덱서 액세스.a[x] – array element or type indexer access.

x++ – 후위 증가.x++ – postfix increment. x의 값을 반환하고 1보다 큰 x 값(일반적으로 정수 1을 더함)으로 스토리지 위치를 업데이트합니다.Returns the value of x and then updates the storage location with the value of x that is one greater (typically adds the integer 1).

x-- – 후위 감소.x-- – postfix decrement. x의 값을 반환하고 1보다 작은 x 값(일반적으로 정수 1을 뺌)으로 스토리지 위치를 업데이트합니다.Returns the value of x and then updates the storage location with the value of x that is one less (typically subtracts the integer 1).

new – 형식 인스턴스화.new – type instantiation.

typeof – 피연산자를 나타내는 Type 개체를 반환합니다.typeof – returns the Type object representing the operand.

checked – 정수 연산에 오버플로 검사를 사용하도록 설정합니다.checked – enables overflow checking for integer operations.

unchecked – 정수 연산에 오버플로 검사를 사용하지 않도록 설정합니다.unchecked – disables overflow checking for integer operations. 이것은 기본 컴파일러 동작입니다.This is the default compiler behavior.

default(T) – T 형식의 기본값을 생성합니다.default(T) – produces the default value of type T.

nameof - 변수, 형식 또는 멤버의 단순(정규화되지 않은) 이름을 상수 문자열로 가져옵니다.nameof - obtains the simple (unqualified) name of a variable, type, or member as a constant string.

delegate – 대리자 인스턴스를 선언하고 반환합니다.delegate – declares and returns a delegate instance.

sizeof – 형식 피연산자의 크기(바이트)를 반환합니다.sizeof – returns the size in bytes of the type operand.

stackalloc - 스택의 메모리 블록을 할당합니다.stackalloc - allocates a block of memory on the stack.

-> – 멤버 액세스와 결합된 포인터 간접 참조입니다.-> – pointer indirection combined with member access.

단항 연산자Unary operators

이러한 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.These operators have higher precedence than the next section and lower precedence than the previous section.

+x – x의 값을 반환합니다.+x – returns the value of x.

-x – 숫자 부정-x – numeric negation.

!x – 논리 부정!x – logical negation.

~x – 비트 보수~x – bitwise complement.

++x – 전위 증가++x – prefix increment. 1보다 큰 x 값(일반적으로 정수 1을 더함)으로 스토리지 위치를 업데이트한 후 x의 값을 반환합니다.Returns the value of x after updating the storage location with the value of x that is one greater (typically adds the integer 1).

--x – 전위 감소--x – prefix decrement. 1보다 작은 x 값(일반적으로 정수 1을 뺌)으로 스토리지 위치를 업데이트한 후 x의 값을 반환합니다.Returns the value of x after updating the storage location with the value of x that is one less (typically subtracts the integer 1).

(T)x – 형식 캐스팅(T)x – type casting.

awaitTask를 대기합니다.await – awaits a Task.

&x – 변수의 주소입니다.&x – address of a variable.

* x – 포인터 간접 참조 또는 역참조입니다.*x – pointer indirection, or dereference.

true 연산자 - booltrue를 반환하여 피연산자가 확실히 true임을 나타냅니다.true operator - returns the bool value true to indicate that an operand is definitely true.

false 연산자 - booltrue를 반환하여 피연산자가 확실히 false임을 나타냅니다.false operator - returns the bool value true to indicate that an operand is definitely false.

곱하기 연산자Multiplicative operators

이러한 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.These operators have higher precedence than the next section and lower precedence than the previous section.

x * y – 곱하기x * y – multiplication.

x / y – 나누기x / y – division. 피연산자가 정수인 경우 결과는 0으로 잘린 정수입니다(예: -7 / 2 is -3).If the operands are integers, the result is an integer truncated toward zero (for example, -7 / 2 is -3).

x % y - 나머지.x % y – remainder. 피연산자가 정수인 경우 x를 y로 나눈 나머지를 반환합니다.If the operands are integers, this returns the remainder of dividing x by y. q = x / y이고 r = x % y인 경우 x = q * y + r입니다.If q = x / y and r = x % y, then x = q * y + r.

더하기 연산자Additive operators

이러한 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.These operators have higher precedence than the next section and lower precedence than the previous section.

x + y – 더하기x + y – addition.

x – y – 빼기x – y – subtraction.

시프트 연산자Shift operators

이러한 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.These operators have higher precedence than the next section and lower precedence than the previous section.

x << y – 왼쪽 비트를 시프트하고 오른쪽을 0으로 채웁니다.x << y – shift bits left and fill with zero on the right.

x >> y – 오른쪽 비트를 시프트합니다.x >> y – shift bits right. 왼쪽 피연산자가 int 또는 long이면 왼쪽 비트는 부호 비트로 채워집니다.If the left operand is int or long, then left bits are filled with the sign bit. 왼쪽 피연산자가 uint 또는 ulong이면 왼쪽 비트는 0으로 채워집니다.If the left operand is uint or ulong, then left bits are filled with zero.

관계형 및 형식 테스트 연산자Relational and type-testing operators

이러한 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.These operators have higher precedence than the next section and lower precedence than the previous section.

x < y –보다 작음(x가 y보다 작은 경우 true)x < y – less than (true if x is less than y).

x > y – 보다 큼(x가 y보다 큰 경우 true)x > y – greater than (true if x is greater than y).

x <= y – 크거나 같음x <= y – less than or equal to.

x >= y – 보다 크거나 같음x >= y – greater than or equal to.

is – 형식 호환성.is – type compatibility. 계산된 왼쪽 피연산자를 오른쪽 피연산자에 지정된 형식(정적 형식)으로 캐스팅할 수 있는 경우 true를 반환합니다.Returns true if the evaluated left operand can be cast to the type specified in the right operand (a static type).

as – 형식 변환.as – type conversion. 오른쪽 피연산자에 지정된 형식(정적 유형)으로 캐스팅된 왼쪽 피연산자를 반환하지만 (T)x가 예외를 throw하는 경우 asnull을 반환합니다.Returns the left operand cast to the type specified by the right operand (a static type), but as returns null where (T)x would throw an exception.

같음 연산자Equality operators

이러한 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.These operators have higher precedence than the next section and lower precedence than the previous section.

x == y – 같음.x == y – equality. 기본적으로 string이 아닌 참조 형식에 대해 참조 같음(ID 테스트)을 반환합니다.By default, for reference types other than string, this returns reference equality (identity test). 그러나 형식이 ==를 오버로드할 수 있으므로 ID를 테스트하려는 경우에는 object에서 ReferenceEquals 메서드를 사용하는 것이 가장 좋습니다.However, types can overload ==, so if your intent is to test identity, it is best to use the ReferenceEquals method on object.

x != y – 같지 않음.x != y – not equal. ==에 대한 설명을 참조하세요.See comment for ==. 형식이 ==를 오버로드하는 경우 !=를 오버로드해야 합니다.If a type overloads ==, then it must overload !=.

논리곱 연산자Logical AND operator

이 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.This operator has higher precedence than the next section and lower precedence than the previous section.

x & ybool 피연산자의 경우 논리 AND이고, 정수 형식 피연산자의 경우 비트 논리 AND입니다.x & ylogical AND for the bool operands or bitwise logical AND for the operands of the integral types.

논리적 XOR 연산자Logical XOR operator

이 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.This operator has higher precedence than the next section and lower precedence than the previous section.

x ^ ybool 피연산자의 경우 논리 XOR이고, 정수 형식 피연산자의 경우 비트 논리 XOR입니다.x ^ ylogical XOR for the bool operands or bitwise logical XOR for the operands of the integral types.

이는 논리 OR 연산자입니다Logical OR operator

이 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.This operator has higher precedence than the next section and lower precedence than the previous section.

x | ybool 피연산자의 경우 논리 OR이고, 정수 형식 피연산자의 경우 비트 논리 OR입니다.x | ylogical OR for the bool operands or bitwise logical OR for the operands of the integral types.

조건부 AND 연산자Conditional AND operator

이 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.This operator has higher precedence than the next section and lower precedence than the previous section.

x && y – 논리적 AND.x && y – logical AND. 첫 번째 피연산자가 false로 확인되면, C#에서 두 번째 피연산자를 계산하지 않습니다.If the first operand evaluates to false, then C# does not evaluate the second operand.

조건부 OR 연산자Conditional OR operator

이 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.This operator has higher precedence than the next section and lower precedence than the previous section.

x || y – 논리적 OR.x || y – logical OR. 첫 번째 피연산자가 true로 확인되면, C#에서 두 번째 피연산자를 계산하지 않습니다.If the first operand evaluates to true, then C# does not evaluate the second operand.

Null 병합 연산자Null-coalescing operator

이 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.This operator has higher precedence than the next section and lower precedence than the previous section.

x ?? ynull이 아닌 경우 x를 반환하고, 그렇지 않은 경우 y를 반환합니다.x ?? y – returns x if it is non-null; otherwise, returns y.

조건 연산자Conditional operator

이 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.This operator has higher precedence than the next section and lower precedence than the previous section.

t ? x : y - 테스트 t가 true로 확인되면 x를 계산하여 반환하고, 그렇지 않은 경우 y를 계산하여 반환합니다.t ? x : y – if test t evaluates to true, then evaluate and return x; otherwise, evaluate and return y.

할당 및 람다 연산자Assignment and lambda operators

이러한 연산자는 다음 섹션보다 우선 순위가 높고 이전 섹션보다 우선 순위가 낮습니다.These operators have higher precedence than the next section and lower precedence than the previous section.

x = y – 할당x = y – assignment.

x += y – 증가.x += y – increment. y의 값을 x 값에 더하고 결과를 x에 저장한 다음 새 값을 반환합니다.Add the value of y to the value of x, store the result in x, and return the new value. x이벤트를 지정하는 경우 y는 C#에서 이벤트 처리기로 추가하는 적절한 방법이어야 합니다.If x designates an event, then y must be an appropriate method that C# adds as an event handler.

x -= y – 감소.x -= y – decrement. x의 값에서 y의 값을 빼고 결과를 x에 저장한 다음 새 값을 반환합니다.Subtract the value of y from the value of x, store the result in x, and return the new value. x이벤트를 지정하는 경우 y는 C#에서 이벤트 처리기로 제거하는 적절한 방법이어야 합니다.If x designates an event, then y must be an appropriate method that C# removes as an event handler.

x *= y – 곱하기 대입.x *= y – multiplication assignment. y의 값을 x의 값에 곱하고 결과를 x에 저장한 다음 새 값을 반환합니다.Multiply the value of y to the value of x, store the result in x, and return the new value.

x /= y – 나누기 대입.x /= y – division assignment. x의 값을 y의 값으로 나누고 결과를 x에 저장한 다음 새 값을 반환합니다.Divide the value of x by the value of y, store the result in x, and return the new value.

x %= y – 나머지 할당.x %= y – remainder assignment. x의 값을 y의 값으로 나누고 나머지를 x에 저장한 다음 새 값을 반환합니다.Divide the value of x by the value of y, store the remainder in x, and return the new value.

x &= y – AND 대입.x &= y – AND assignment. y의 값을 x의 값과 AND하고 결과를 x에 저장한 다음 새 값을 반환합니다.AND the value of y with the value of x, store the result in x, and return the new value.

x |= y – OR 대입.x |= y – OR assignment. y의 값을 x의 값과 OR하고 결과를 x에 저장한 다음 새 값을 반환합니다.OR the value of y with the value of x, store the result in x, and return the new value.

x ^= y – XOR 대입.x ^= y – XOR assignment. y의 값을 x의 값과 XOR하고 결과를 x에 저장한 다음 새 값을 반환합니다.XOR the value of y with the value of x, store the result in x, and return the new value.

x <<= y – 왼쪽 시프트 대입.x <<= y – left-shift assignment. x의 값을 왼쪽으로 y 위치만큼 시프트하고 결과를 x에 저장한 다음 새 값을 반환합니다.Shift the value of x left by y places, store the result in x, and return the new value.

x >>= y – 오른쪽 시프트 대입.x >>= y – right-shift assignment. x의 값을 오른쪽으로 y 위치만큼 시프트하고 결과를 x에 저장한 다음 새 값을 반환합니다.Shift the value of x right by y places, store the result in x, and return the new value.

=> – 람다 선언.=> – lambda declaration.

참고 항목See also