Arbeiten mit .NET: C-Sharp/ Arbeitsablauf/ Datentypen verarbeiten/ Überblick zu Operatoren

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Was sind Operatoren?[Bearbeiten]

Operatoren sind neben den Operanden Bestandteile von Ausdrücken. Ausdrücke sind Berechnungsvorschriften zur Berechnung eines Ergebnisses aus den Operanden. Beispiele dazu sind:

  • Berechne die Fläche eines Rechtecks aus Seite1 * Seite2
  • Berechne die Umsatzsteuer für einen Artikel aus Nettopreis * (1 + Umsatzsteuersatz / 100)
  • Berechne Kreisfläche aus Durchmesser hoch 2 * PI / 4

Operatoren in diesen Ausdrücken sind die Multiplikation (*), die Addition (+) und die Division (/). Seite1, Seite2, Nettopreis, 1, 100, Umsatzsteuer, Durchmesser, 2, 4 und PI sind Operanden in diesen Ausdrücken. Allgemein können Operanden Literale, Werte von Konstanten, Werte von Variablen oder auch Methoden mit Rückgabewert sein.

Arten von Operatoren[Bearbeiten]

In fast allen Programmiersprachen gibt es die gleichen Arten von Operatoren:

  • Zuweisungsoperator
  • Konditionaloperator
  • Arithmetische Operatoren
  • Relationaloperatoren (auch Vergleichsopratoren)
  • Logische Operatoren (auch Bool'sche Operatoren)
  • Stringoperatoren
  • weitere Operatoren

Zuweisungsoperator[Bearbeiten]

Der Zuweisungsoperator wird durch das Zeichen = ausgedrückt. Auf der linken Seite des Zuweisungsoperators muss eine Variable, auf der rechten Seite ein Ausdruck (Operanden und Operatoren) stehen, dessen Ergebnistyp mit dem Typ der Variablen kompatibel ist. In diesem Zusammenhang ist auch interessant, dass bei C# eine solcher Zuweisungsausdruck selbst (wie eben jeder Ausdruck) ein Ergebnis hat, wie im unten stehenden Beispiel zu sehen ist. Daraus ergeben sich (leider) vielfältige Möglichkeiten, beim Leser des Quelltextes Verwirrung zu stiften. Insofern sollte davon Abstand genommen werden.

Beispiele für den Zuweisungsoperator zeigt der nachfolgende Programmausschnitt.

string eingabe;
double anfangskapital, anfangskapitalHalb;
int laufzeit;

// Zuweisungsoperator
eingabe = "Programmierung mit C#";
anfangskapital = 1567.75;
laufzeit = 10;
anfangskapitalHalb = anfangskapital / 2;
// zur Beachtung: ein Zuweisungsausdruck hat selbst ein Ergebnis:
// Weist der Variablen einen neuen Wert ("Hallo Welt") zu und 
// gibt diesen als Ergebnis des Zuweisungsausdrucks auf der Konsole aus
Console.WriteLine(eingabe = "Hallo Welt");
// Gibt den Wert der Variablen "Hallo Welt" auf der Konsole aus
Console.WriteLine(eingabe);
/* usw. */

Konditionaloperator[Bearbeiten]

Der Konditionaloperator ist ein ternärer Operator, da er drei Operanden miteinander verknüpft. Er erlaubt eine kompakte Formulierung einer Zuweisung in Abhängigkeit einer Bedingung (Kondition). Um beispielsweise einen Absolutwert einer Zahl zu berechnen, gilt folgende Regel: Wenn die Zahl < 0 ist, dann ist sein Absolutwert = -Wert, sonst ist sein Absolutwert = Wert. Dies läßt sich kompakt durch den Konditionaloperator, gebildet aus den Symbolen = ? und :, abbilden:

int i = -5;
// Wenn i kleiner 0 ist, dann wird i zu -i, sonst bleibt i unverändert
i = (i < 0) ? -i : i;  
// oder auch i = (i < 0) ? i * -1 : i;
Console.WriteLine(i);

Arithmetische Operatoren[Bearbeiten]

Diese dienen der Formulierung mathematischer Ausdrücke zur numerischen Berechnung der Werte eines Ausdrucks. Arithmetische Operatoren können unär ( ein Operand) oder binär (zwei Operanden) sein. Als arithmetische Operatoren stehen in C# zur Verfügung:

Operator Form Bedeutung Operanden Ergebnis Beispiel
+ unär positiver Wert Numerisch Numerisch + 23.67
- unär negativer Wert Numerisch Numerisch - 23.67
+ binär Addition Numerisch Numerisch 17.5 + 23
- binär Subtraktion Numerisch Numerisch 17.5 - 23
* binär Multiplikation Numerisch Numerisch 17.5 * 23
/ binär Division Numerisch Numerisch 17.5 / 23
% binär Rest einer Ganzzahldivision Ganzzahlen Ganzzahl 17 % 23

Numerische Werte können ganze und nicht ganze Zahlen sein.

Eine Besonderheit sind zusammengesetzte arithmetische Operatoren, die die Zuweisung mit einer Berechnung kombinieren. Sie bestehen aus zwei Operatoren, wobei der erste ein = ist und der zweite die Art der Operation zum Ausdruck bringt. In nachfolgender Tabelle soll eine Variable i vom Typ int den Wert 23 haben.

Operator Beispiel Berechnet Ergebnis
+= i += 5 i = i + 5 28
-= i -= 8 i = i - 8 20
*= i *= 2 i = i * 2 40
/= i /= 10 i = i / 10 4
%= i %= 3 i = i % 3 1

Relationaloperatoren[Bearbeiten]

Mittels relationaler Operatoren lassen sich Vergleiche von Werten durchführen. Der jeweilige Vergleich kann dabei das Ergebnis wahr (true) oder falsch (false) aufweisen. Verglichen werden können dabei jeweils Operanden vergleichbarer Typen (numerisch mit numerisch, Zeichenfolge mit Zeichenfolge, nicht aber numerisch mit Zeichenfolge u.u.).

Die Tabelle zeigt die in C# verfügbaren relationalen Operatoren und Beispiele dazu.

Operator Bedeutung Beispiel Ergebnis
< kleiner als 5 < 3 false
<= kleiner oder gleich 5 <= 3 false
> größer als 5 > 3 true
>= größer oder gleich 5 >= 3 true
== gleich 5 == 3 false
!= ungleich 5 != 3 true
< kleiner als "AB" < "AC" true
> größer als "AB" > "AC" false

Logische Operatoren[Bearbeiten]

Logische Operatoren können nur auf Operanden des Typs bool angewendet werden. Sie fassen mehrere dieser Wert zu einem neuen Wahrheitswert zusammen.

Die Tabelle zeigt die in C# verfügbaren logischen Operatoren und die Wahrheitswerte dieser Operatoren.

Operator Operation Form Operandentyp Ergebnistyp Beispiel
! NOT unäre bool bool !true
& logisch Und binär bool bool true & false
| logisch Oder binär bool bool true | false
^ log. Antivalenz binär bool bool true ^ false

In der nachfolgenden Tabelle finden sich die Ergebniswerte solcher Ausdrücke.

OP1 OP2 !OP1 OP1 & OP2 OP1 | OP2 OP1 ^ OP2
true true false true true false
true false false false true true
false true true false true true
false false true false false false

Stringoperatoren[Bearbeiten]

Stringoperatoren verwenden i.d.R. Operanden des Typs String. Stringoperatoren sind:

  • Der Konkatinierungsoperator (+)
  • Der Erweiterungsoprator (bietet Platzhalter)

Mittels Konkatinierungsoperator lassen sich zunächst Zeichenketten miteinander zu einer einzigen Zeichenkette verbinden. Ist jedoch ein Operand keine Zeichenkette, so wird dieser automatisch in eine solche umgewandelt, es sei denn, durch entsprechende Klammerung numerischer Werte wird deren Berechnung priorisiert

Der Konkatinierungsoperator wird durch das Zeichen + ausgedrückt. Das Ergebnis des Ausdrucks ist immer ein Wert des Typs string, wie folgende Beispiele zeigen.

"Hans" + "-Peter" + " Mayer" "Hans-Peter Mayer"
"Turmweg " + 3 + 2000 + " Hamburg" "Turmweg 32000 Hamburg"
"Turmweg " + (3 + 2000) + " Hamburg" "Turmweg 2003 Hamburg"

Der Erweiterungsoperator ermöglicht ebenfalls eine Konkatinierung, erweitert diese aber durch Platzhalter, die in geschweifte Klammern gesetzt werden. Sinnvoll ist dies natrülich nicht im Falle von Literalen, sondern bei der Verwendung von Variablen. Der Erweiterungsoperator wird durch das Zeichen $ ausgedrückt.

Gegeben seien folgende Variable: string vorname = "Hans"; string strasse = "Turmweg"; int haus = 3; inr plz = 2000; string stadt ="Hamburg"; Der Ausdruck

$"{vorname} wohnt in {strasse} {haus} in der Stadt {plz} {stadt}" ergibt dann diesen Wert: "Hans wohnt in Turmweg 3 in der Stadt 2000 Hamburg".