Udostępnij za pośrednictwem


Oczekiwano operatorów (Podręcznik programowania C#)

C# pozwala typy zdefiniowane przez użytkownika na przeciążenie operatorów, definiując funkcji członka statycznego przy użyciu operator słowa kluczowego.Nie wszystkie podmioty gospodarcze mogą być jednak przeciążony i inne mają ograniczenia, jak wymienione w tej tabeli:

Podmioty gospodarcze

Overloadability

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

Te operatory jednoargumentowe mogą być przeciążone.

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

Te operatory dwuargumentowe mogą być przeciążone.

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

Operatory porównania mogą być przeciążone (lecz patrz Uwaga, znajdujący się w tej tabeli).

&&, ||

Warunkowe operatory logiczne nie może być przeciążone, ale są one oceniane z zastosowaniem & i |, które mogą być przeciążone.

[]

Operatora indeksowania tablicy nie może być nadmiernie obciążony, ale można zdefiniować indeksatory.

(T) x

Operatora rzutowania nie może być nadmiernie obciążony, ale można zdefiniować nowe operatory konwersji (zobacz jawne i niejawny).

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

Nie mogą być przeciążone operatory przypisania, ale +=, na przykład, jest oceniane z zastosowaniem +, które mogą być przeciążone.

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

Nie można obciążać tych operatorów.

[!UWAGA]

Operatory porównania, jeśli przeciążony, musi być przeciążone w pary; oznacza to, że jeśli == jest przeciążony, != również mogą być przeciążone.Odwrotna jest także prawdziwy i podobne do < i >oraz <= i >=.

Przeciążyć operatora na niestandardowej klasy wymaga tworzenia metoda w klasie z poprawny podpis.Metoda musi mieć nazwę "operator X", gdzie x jest nazwa lub symbol operatora przeciążeniu.Operatory jednoargumentowe mają jeden parametr i operatory dwuargumentowe zostały dwa parametry.W każdym przypadku jeden parametr musi być tego samego typu co klasy lub struktury, która deklaruje operatora, jak pokazano w poniższym przykładzie:

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

Aby uzyskać więcej informacji, zobacz Jak: Użyj przeciążanie do tworzenia klas (Podręcznik programowania C#) liczby zespolonej.

Zobacz też

Informacje

Instrukcje, wyrażenia i operatorów (Podręcznik programowania C#)

Podmioty gospodarcze (Podręcznik programowania C#)

Operatory języka C#

Koncepcje

Podręcznik programowania C#

Inne zasoby

Dlaczego są przeciążone operatory zawsze statyczne w języku C#?