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 |
---|---|
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. |
|
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#)
Koncepcje
Inne zasoby
Dlaczego są przeciążone operatory zawsze statyczne w języku C#?