오버로드할 수 있는 연산자(C# 프로그래밍 가이드)

C#에서는 사용자 정의 형식에서 operator 키워드로 정적 멤버 함수를 정의하여 연산자를 오버로드할 수 있습니다.그러나 다음 표에서 볼 수 있는 것처럼 모든 연산자를 오버로드할 수 있는 것은 아니며 일부 제한이 있는 연산자도 있습니다.

연산자

오버로드 가능성

+, -, !, ~, ++, --, true, false

이 단항 연산자는 오버로드할 수 있습니다.

+, -, *, /, %, &, |, ^, <<, >>

이 이항 연산자는 오버로드할 수 있습니다.

==, !=, <, >, <=, >=

비교 연산자는 오버로드할 수 있습니다. 단, 이 표의 아래에 있는 참고 사항을 참조하십시오.

&&, ||

조건 논리 연산자는 오버로드할 수 없지만, 오버로드 가능한 & 및 |를 사용하여 계산할 수 있습니다.

[]

배열 인덱싱 연산자는 오버로드할 수 없지만 인덱서를 정의할 수 있습니다.

(T)x

캐스트 연산자는 오버로드할 수 없지만 새로운 변환 연산자를 정의할 수 있습니다(explicitimplicit 참조).

+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

할당 연산자는 오버로드할 수 없지만 다른 방법으로 계산할 수 있습니다. 예를 들어, += 연산자는 오버로드할 수 있는 + 연산자를 사용하여 계산할 수 있습니다.

=, ., ?:, ??, ->, =>, f(x), as, checked, unchecked, default, delegate, is, new, sizeof, typeof

이 연산자는 오버로드할 수 없습니다.

[!참고]

비교 연산자를 오버로드하는 경우에는 쌍으로 오버로드해야 합니다. 즉, == 연산자를 오버로드하려면 != 연산자도 오버로드해야 합니다.반대의 경우에도 마찬가지이며 < 및 > 연산자, <= 및 >= 연산자의 경우에도 동일한 규칙이 적용됩니다.

사용자 지정 클래스에 대한 연산자를 오버로드하려면 올바른 시그니처를 사용하여 클래스의 메서드를 만들어야 합니다.이 메서드의 이름은 "operator X"여야 합니다. 여기서 X는 오버로드하려는 연산자의 이름이나 기호입니다.단항 연산자에는 매개 변수가 하나이고, 이항 연산자에는 매개 변수가 두 개입니다.각각의 경우에 매개 변수 중 하나는 연산자를 선언하는 클래스나 구조체와 동일한 형식이어야 합니다. 예를 들면 다음과 같습니다.

public static Complex operator +(Complex c1, Complex c2)

자세한 내용은 방법: 연산자 오버로딩을 사용하여 복소수 클래스 만들기(C# 프로그래밍 가이드)를 참조하십시오.

참고 항목

참조

문, 식, 연산자(C# 프로그래밍 가이드)

연산자(C# 프로그래밍 가이드)

C# 연산자

개념

C# 프로그래밍 가이드

기타 리소스

이유는 오버 로드 된 연산자 항상 C#에서 고정 됩니다.