Benutzer mit den meisten Antworten
Überladener Operator (Equality)

Frage
-
Hallo,
Mein Problem besteht bei dem überladenen Operator ==
Ich habe eine Klasse, in welcher die statische Methode eingebaut ist. Leider habe ich das Problem, wenn ich auf NULL prüfe kommt es zu einem nicht erwünschten Verhalten. Die Methode kommt einfach nicht mehr zurück. Ich habe es jetzt mit einem try/catch Block versucht und es funktioniert. Dies ist aber meiner Meinung nach eine unsaubere Lösung.
Gibt es einen Weg ohne try/catch auszukommen?
Hier der Code des überladenen Operators:
public static bool operator ==(tCpCut lhs, tCpCut rhs) { bool bequal = true; try { if (lhs.fD != rhs.fD) { return false; } if (lhs.iNum != rhs.iNum) { return false; } if (lhs.iL != rhs.iL) { return false; } if (lhs.iT != rhs.iT) { return false; } if (lhs.iN != rhs.iN) { return false; } return bequal; } catch (Exception) { return false; } }
Vielen Dank schon mal im Voraus :-)
Antworten
-
Hallo D.,
[Richtlinien zum Überschreiben von Equals() und des Operators == (C#-Programmierhandbuch)]
http://msdn.microsoft.com/de-de/library/ms173147(v=vs.90).aspx
http://msdn.microsoft.com/de-de/library/7h9bszxx.aspxBeachte, ein häufiger Fehler bei der Überladung des Operators == ist die Verwendung von (a == b), (a == null) oder (b == null), um auf Verweisgleichheit zu überprüfen. Dies erstellt stattdessen einen Aufruf des überladenen Operators == und verursacht eine Endlosschleife. Um dies zu vermeiden, verwende ReferenceEquals, oder wandele den Typ in Object um.
[InfoQ - Detailed look at Overriding the Equality Operator]
ciao Frank
- Als Antwort markiert D.Hauer Mittwoch, 17. August 2011 07:09
Alle Antworten
-
Hallo D.,
[Richtlinien zum Überschreiben von Equals() und des Operators == (C#-Programmierhandbuch)]
http://msdn.microsoft.com/de-de/library/ms173147(v=vs.90).aspx
http://msdn.microsoft.com/de-de/library/7h9bszxx.aspxBeachte, ein häufiger Fehler bei der Überladung des Operators == ist die Verwendung von (a == b), (a == null) oder (b == null), um auf Verweisgleichheit zu überprüfen. Dies erstellt stattdessen einen Aufruf des überladenen Operators == und verursacht eine Endlosschleife. Um dies zu vermeiden, verwende ReferenceEquals, oder wandele den Typ in Object um.
[InfoQ - Detailed look at Overriding the Equality Operator]
ciao Frank
- Als Antwort markiert D.Hauer Mittwoch, 17. August 2011 07:09