ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
1211
1211
EMPFEHLEN
-
Hallo,
ich habe eine grundsätzliche Frage bezgl. C# Referenzen auf eigene Objekte.
Es gibt ja 3 Möglichkeiten Objekte auf Gleichheit zu überprüfen (keine Strings):
1. Methode ReferenceEquals der Klasse Object
2. Equals der Klasse Object
3. == Operator
Alle 3 Möglichkeiten vergleichen eigene Objekte (z.B. eine eigene Klasse Auto)
in Bezug auf die Referenz des Objektes -> also ob es sich um die gleiche Instanz der Klasse handelt (gleicher Speicherbereich).
Falls ich jetzt nicht auf die Referenz vergleichen möchte
sondern auf den Wert der Attribute der Objekte so
muss ich die Funktionen in der Klasse überladen.
Habe ich das so richtig verstanden?
Weiterhin:
Wenn ich folgende Funktion habe:
Gibt mir die Funktion dann eine Referenz auf das Objekt zurück oder eine Kopie?Code :1 2 3 4 5 6 7 8 9 10
Auto GetAutoById(string strId) { foreach(Auto cAuto in ListeMitAutoObjekten) { if(cAuto.strId == strId) { return cAuto; } } }
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.
Gruss{Eve}
-
Hallo!
Ja, das hast Du richtig verstanden. Durch das Überladen der equals-Methode in Deiner eigenen Klasse kannst Du einen Vergleich aller von Dir gewünschten Attribute vornehmen.
viele Grüsse
Thomas.Mein kleines selbstgemachtes
Online Quiz freut sich über neue User, Rückmeldungen und Kritik :-)
-
== Operator und Equals Methode kannst du ja überschreiben, das heißt also nicht das du automatisch auf die gleiche Referenz drauf zu greifst.
Besagt im Grunde nur die Typen sind gleich.
Es gibt da im übrigen auch noch die SchnittstelleIEquatable.
Und wenn du Equals überschreibst musst du auch die GetHashCode Methode überschreiben.
Dieser Code wird in erster Instanz überprüft, ist der gleich zwischen 2 Objekten wird mit Equals weiter geprüft.
-
13.02.10 10:50 #4Maik Tutorials.de Gastzugang
@Sunny-Sunbaby: Deiner Frage wurde ein eigenes Thema gewidmet: Vokabeltrainer
mfg Maik
-
13.02.10 17:55 #5
@Maik
ja ich weiß!die hab ich ja da auch zuerst gefragt,dann ham sie mich hierhin geschickt!
ggglg sunny
-
Hallo Eve,Weiterhin:
...
Wenn ich folgende Funktion habe:
Gibt mir die Funktion dann eine Referenz auf das Objekt zurück oder eine Kopie?Code :1 2 3 4 5 6 7 8 9 10
Auto GetAutoById(string strId) { foreach(Auto cAuto in ListeMitAutoObjekten) { if(cAuto.strId == strId) { return cAuto; } } }
hier wird die Referenz zurückgegeben.
Gruß
Col.BlakeGeändert von colblake (16.02.10 um 14:43 Uhr)
Über so viele Sachen wächst Gras , man kann keiner Wiese mehr trauen.
-
Wäre die Frage nicht eher, ist Auto ein struct oder class?
structs sind Wertetypen, du bekommst eine Kopie zurück
classes sind Referenztypen, du bekommst eine Referenz zurück.
-
Über so viele Sachen wächst Gras , man kann keiner Wiese mehr trauen.
Ähnliche Themen
-
Referenzen auf Objekte
Von JavaJoe? im Forum Java GrundlagenAntworten: 8Letzter Beitrag: 04.06.09, 08:39 -
Eigene Objekte casten
Von Schimmelbart im Forum JavaAntworten: 1Letzter Beitrag: 06.06.06, 08:59 -
Böses Excel... Wie schliesst man Referenzen und Objekte richtig?
Von vault-tec im Forum Coders TalkAntworten: 0Letzter Beitrag: 02.05.06, 15:08 -
Referenzen erzwingen? Objekte erstellen?
Von realpk im Forum Flash PlattformAntworten: 9Letzter Beitrag: 08.02.06, 09:14 -
Eigene Objekte in die Taskbar?
Von kahuna im Forum .NET ArchivAntworten: 1Letzter Beitrag: 22.11.04, 22:16





Zitieren
Login





