+ Operator (zwei unterschiedliche Summanden (Objekttypen))



  • Hallo,

    gibt es in C# die Möglichkeit den + Operator zu überladen und beide Summanden vom Typ ungleich dem des Typs zu verwenden, für den der Operator überladen wird?

    Ein Bekannter hat dazu eine Übungsaufgabe wobei Klassen verwendet werden, um mit Währungen ein bisschen herum zu spielen (Euro in Dollar umrechnen, addieren etc.). Dabei steht in der Aufgabe überladen Sie den +-Operator so, sodass z.B:

    dollar=euro+yen

    verwendet werden kann. Zusätzlich gibt sind schon explizite und implizite casts geschrieben wurden, um die Währungen in andere umzurechnen:

    dollar=(dollar)euro.

    Die Frage ist nun, ob man die Addition wie oben geschrieben verwenden kann (casts werden dann in der Überladung für die Summanden zur Umwandlung in Dollar verwendet), oder ob nur sowas möglich ist, wobei die Summanden bei der Addition gecastet werden, damit beide Summanden vom Typ Dollar sind:

    dollar=(dollar)euro+(dollar)yen.

    Wäre sehr dankbar über eine Antwort oder einen Tipp 🙂

    Viele Grüße,
    Erano1



  • Ja, du kannst den Operator mit zwei unterschiedlichen Datentypen bei den Parametern erstellen - einer davon muß aber gleich der Klasse sein, in der dieser Operator definiert wurde, s.a. Überladbare Operatoren (ich würde daher immer den ersten Parameter gleich der Klasse wählen).

    Mußt aber aufpassen, daß du bei der Implementierung keine Rekursion einbaust, wenn du bei der Addition eine andere Addition aufrufst (d.h. am besten jeweils den Grunddatentyp (decimal) verwenden).


Log in to reply