Überladbare Operatoren (C#-Programmierhandbuch)Overloadable operators (C# Programming Guide)

C# ermöglicht benutzerdefinierten Typen, mithilfe des Schlüsselworts operator Operatoren durch das Definieren von statischen Memberfunktionen zu überladen.C# allows user-defined types to overload operators by defining static member functions using the operator keyword. Nicht alle Operatoren können überladen werden und weisen andere Einschränkungen auf. Eine entsprechende Auflistung finden Sie in dieser Tabelle:Not all operators can be overloaded, however, and others have restrictions, as listed in this table:

OperatorenOperators ÜberladbarkeitOverloadability
+, -, !, ~, ++, --, true, false+, -, !, ~, ++, --, true, false Diese unären Operatoren können überladen werden.These unary operators can be overloaded.
+, -, *, /, %, &, |, ^, <<, >>+, -, *, /, %, &, |, ^, <<, >> Diese binären Operatoren können überladen werden.These binary operators can be overloaded.
==, !=, <, >, <=, >===, !=, <, >, <=, >= Die Vergleichsoperatoren können überladen (beachten Sie jeden Hinweis im Anschluss an diese Tabelle) werden.The comparison operators can be overloaded (but see the note that follows this table).
&&, ||&&, || Die bedingten logischen Operatoren können nicht überladen werden. Sie werden jedoch mithilfe von & und | ausgewertet, die überladen werden können.The conditional logical operators cannot be overloaded, but they are evaluated using & and |, which can be overloaded.
[][] Der Arrayindizierungsoperator kann nicht überladen werden. Sie können jedoch Indexer definieren.The array indexing operator cannot be overloaded, but you can define indexers.
(T)x(T)x Der Umwandlungsoperator kann nicht überladen werden. Sie können jedoch neue Konvertierungsoperatoren definieren (siehe explicit und implicit).The cast operator cannot be overloaded, but you can define new conversion operators (see explicit and implicit).
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= Zuweisungsoperatoren können nicht explizit überladen werden.Assignment operators cannot be explicitly overloaded. Wenn Sie einen binären Operator überladen, wird der zugehörige Zuweisungsoperator jedoch, sofern er vorhanden ist, auch implizit überladen.However, when you overload a binary operator, the corresponding assignment operator, if any, is also implicitly overloaded. Wenn += beispielsweise mit + ausgewertet wird. Selbiger kann überladen werden.For example, += is evaluated using +, which can be overloaded.
=, ., ?:, ??, ->, =>, f(x), as, checked, unchecked, default, delegate, is, new, sizeof, typeof=, ., ?:, ??, ->, =>, f(x), as, checked, unchecked, default, delegate, is, new, sizeof, typeof Diese Operatoren können nicht überladen werden.These operators cannot be overloaded.

Hinweis

Die Vergleichsoperatoren müssen, sofern sie überladen sind, paarweise überladen werden. Beim Überladen von == muss != demnach ebenfalls überladen werden.The comparison operators, if overloaded, must be overloaded in pairs; that is, if == is overloaded, != must also be overloaded. Das Gegenteil trifft ebenfalls zu, wenn das Überladen von != eine Überladung von == erfordert.The reverse is also true, where overloading != requires an overload for ==. Das gleiche gilt für die Vergleichsoperatoren <, >, <= und >=.The same is true for comparison operators < and > and for <= and >=.

Informationen zum Überladen eines Operators finden Sie im Keyword-Artikel Operator.For information about how to overload an operator, see the operator keyword article.

Siehe auchSee also