Nachdem mir ein ehmaliger Klassenkamerad vor kurzem zeigte, dass man in Delphi Operatoren überladen bzw. überschreiben kann, stelle ich nun fest: Das geht auch in C#.
Ich selbst habe noch keine wirkliche Verwendung gefunden, aber ich finde es irgentwie cool
Zunächst brauchen wir eine Klasse:
- class Class1
- {
- // Interne Variablen
- private int z1 = 0;
- private int z2 = 0;
- /// <summary>
- /// Konstruktor
- /// </summary>
- /// <param name="Zahl1">Wert für Zahl1</param>
- /// <param name="Zahl2">Wert für Zahl1</param>
- public Class1(int Zahl1, int Zahl2)
- {
- z1 = Zahl1;
- z2 = Zahl2;
- }
- /// <summary>
- /// Eigenschaft: Zahl1
- /// </summary>
- public int Zahl1
- {
- get { return z1; }
- set { z1 = value; }
- }
- /// <summary>
- /// Eigenschaft: Zahl2
- /// </summary>
- public int Zahl2
- {
- get { return z2; }
- set { z2 = value; }
- }
- /// <summary>
- /// Lesbare Ausgabe des Objektes
- /// </summary>
- /// <returns></returns>
- public override string ToString()
- {
- return GetType().ToString() + "\r\n{\r\n\tZahl1: " + z1 + "\r\n\tZahl2: " + z2 + "\r\n}";
- }
- }
Rechenoperatoren
Diese Klasse möchte ich gerne Addieren können:
Dies geht erstmal nicht, da .NET ja nicht weis wie man die Klasse addieren kann.
Also erstellen wir einen Plus-Operator, und erklären in diesem wie man die beiden Klassen addiert.
Das ganze geht natürlich nicht nur mit dem Plus-Operator, sondern auch mit allen anderen Operatoren.
Boolean-Ausdrücke
Neben den Rechenoperatoren gibt es noch die Ausdrücke (==, !=, <=, >=, etc.)
So könnte man prüfen, ob die beiden Klassen gleich sind:
Weiteres
Zusätzlich kann man auch verschiedene Datentypen angeben. Wenn man z.B. Klasse + Integer oder Klasse1 + Klasse2 rechnen möchte oder mit etwas anderem vergleichen möchte. Welchen Sinn auch immer das haben könnte.