tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
1211
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    {Eve} {Eve} ist offline Mitglied Silber
    Registriert seit
    Jul 2009
    Beiträge
    54
    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:

    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;
            }
        }
    }
    Gibt mir die Funktion dann eine Referenz auf das Objekt zurück oder eine Kopie?

    Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.

    Gruss
     
    {Eve}

  2. #2
    tomkruse tomkruse ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Ort
    Leonding
    Beiträge
    138
    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 :-)

  3. #3
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    == 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.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  4. #4
    Maik Tutorials.de Gastzugang
    @Sunny-Sunbaby: Deiner Frage wurde ein eigenes Thema gewidmet: Vokabeltrainer

    mfg Maik
     

  5. #5
    Avatar von Sunny-Sunbaby
    Sunny-Sunbaby Sunny-Sunbaby ist offline Grünschnabel
    Registriert seit
    Feb 2010
    Beiträge
    3
    @Maik

    ja ich weiß!die hab ich ja da auch zuerst gefragt,dann ham sie mich hierhin geschickt!


    ggglg sunny
     

  6. #6
    Avatar von colblake
    colblake colblake ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Ort
    dresden
    Beiträge
    214
    Weiterhin:
    ...
    Wenn ich folgende Funktion habe:
    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;
            }
        }
    }
    Gibt mir die Funktion dann eine Referenz auf das Objekt zurück oder eine Kopie?
    Hallo Eve,
    hier wird die Referenz zurückgegeben.

    Gruß
    Col.Blake
    Geändert von colblake (16.02.10 um 14:43 Uhr)
     
    Über so viele Sachen wächst Gras , man kann keiner Wiese mehr trauen.

  7. #7
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    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.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  8. #8
    Avatar von colblake
    colblake colblake ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Ort
    dresden
    Beiträge
    214
    Zitat Zitat von Spyke Beitrag anzeigen
    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.
    Natürlich hast Du recht. Ich hatte hier vorrausgesetzt das Auto eine Klasse ist.

    Gruß
    Col.Blake
     
    Über so viele Sachen wächst Gras , man kann keiner Wiese mehr trauen.

Ähnliche Themen

  1. Referenzen auf Objekte
    Von JavaJoe? im Forum Java Grundlagen
    Antworten: 8
    Letzter Beitrag: 04.06.09, 08:39
  2. Eigene Objekte casten
    Von Schimmelbart im Forum Java
    Antworten: 1
    Letzter Beitrag: 06.06.06, 08:59
  3. Antworten: 0
    Letzter Beitrag: 02.05.06, 15:08
  4. Referenzen erzwingen? Objekte erstellen?
    Von realpk im Forum Flash Plattform
    Antworten: 9
    Letzter Beitrag: 08.02.06, 09:14
  5. Eigene Objekte in die Taskbar?
    Von kahuna im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 22.11.04, 22:16