C#-Operatoren

Aktualisiert: Juli 2008

C# stellt einen großen Satz von Operatoren bereit, bei denen es sich um Symbole handelt, die angeben, welche Operationen in einem Ausdruck durchgeführt werden. Operationen mit ganzzahligen Typen wie ==, !=, <, >, <=, >=, binary +, binary -, ^, &, |, ~, ++, -- und sizeof() sind bei Enumerationen grundsätzlich zulässig. Darüber hinaus können viele Operatoren durch den Benutzer überladen werden, wodurch sich deren Bedeutung bei der Anwendung in einen benutzerdefinierten Typ ändert.

In der folgenden Tabelle werden die C#-Operatoren in der entsprechenden Rangfolge aufgelistet. Operatoren innerhalb einer Gruppe haben den gleichen Rang.

Operatorkategorie

Operatoren

Primär

x.y

f(x)

a[x]

x++

x--

new

typeof

checked

unchecked

->

Unär

+

-

!

~

++x

--x

(T)x

true

false

&

sizeof

Multiplikativ

*

/

%

Additiv

+

-

Verschiebung

<<

>>

Relational und Typtest

<

>

<=

>=

is

as

Gleichheit

==

!=

Logisches AND

&

Logisches XOR

^

Logisches OR

|

Bedingtes AND

&&

Bedingtes OR

||

Bedingt

?:

Zuweisung

=

+=

-=

*=

/=

%=

&=

|=

^=

<<=

>>=

Null Coalesce

??

Lambda

Operator => (C# Referenz)

Arithmetischer Überlauf

Die arithmetischen Operatoren (+, -, *, /) können Ergebnisse erzeugen, die sich außerhalb des zulässigen Wertebereichs für den betreffenden numerischen Typ befinden. Einzelheiten zu bestimmten Operatoren finden Sie im entsprechenden Abschnitt, grundsätzlich gilt aber:

  • Arithmetischer Überlauf bei ganzen Zahlen löst entweder eine OverflowException aus oder verwirft die höchstwertigen Bits des Ergebnisses. Division ganzer Zahlen durch Null löst immer eine DivideByZeroException aus.

  • Arithmetischer Überlauf oder Division durch 0 (null) löst bei Gleitkommazahlen nie eine Ausnahme aus, weil die Gleitkommatypen auf IEEE 754 basieren und daher Vorkehrungen für die Darstellung von Unendlich und NaN (Not a Number/Keine Zahl) aufweisen.

  • Arithmetischer Überlauf bei Decimal löst immer eine OverflowException aus. Dezimale Division durch Null löst immer eine DivideByZeroException aus.

Wenn ein Überlauf bei ganzen Zahlen auftritt, hängen die Auswirkungen vom Ausführungskontext ab, bei dem es sich um "checked" oder "unchecked" handeln kann. In einem aktivierten Kontext wird eine OverflowException ausgelöst. In einem nicht aktivierten Kontext werden die höchstwertigen Bits verworfen, und die Ausführung wird fortgesetzt. Bei C# haben Sie die Wahl, einen Überlauf zu behandeln oder zu ignorieren.

Neben arithmetischen Operatoren können auch Konvertierungen zwischen ganzzahligen Typen (z. B. die Umwandlung von long nach int) einen Überlauf verursachen. Sie sind von der Ausführung (checked oder unchecked) abhängig. Bitweise Operatoren und Schiebeoperatoren verursachen allerdings nie einen Überlauf.

Siehe auch

Aufgaben

Beispiel zum Überladen von Operatoren

Konzepte

C#-Programmierhandbuch

Referenz

Überladbare Operatoren (C#-Programmierhandbuch)

C#-Schlüsselwörter

Weitere Ressourcen

C#-Referenz

Visual C#

Änderungsverlauf

Date

Versionsgeschichte

Grund

Juli 2008

Operator ?? aus Zuweisungskategorie pro Kundenvorschlag verschoben.

Korrektur inhaltlicher Fehler.