Re: Objekt Identität



Hallo Herfried,

danke für die schnelle Antwort!

Ja, jede Instanz eines Verweistyps hat eine Identität. In VB.NET können mittels der Operatoren 'Is' und 'IsNot', in C# mittels '==' und '!=' zwei Verweise dahingehend verglichen werden, ob sie auf das selbe Objekt zeigen. Im einfachsten Fall kannst du also das Objekt selbst als Schlüssel benutzen.

OK, damit kann ich Objekte auf Identitätsgleichheit testen. Das alleine ist aber nicht besonders effizient: angenommen ich habe 1 Million Referenzen in einem Container gespeichert und möchte _effizient_ feststellen, ob ein bestimmtes Anfrageobjekt in dem Container gespeichert ist. Wenn mir nur die Gleichheitsprüfung zur Verfügung steht, muss ich 1 Millionen Vergleiche durchführen. Wenn es aber einen fixen Identitäts-Pointer gäbe, könnte ich den Container danach sortieren und binär suchen; dann käme ich mit etwa 20 Vergleichen aus!
Es gibt den Hash-Wert eines Objektes, nach dem ich sortieren kann. Der ist aber nicht fix, sondern vom Zustand des Objektes abhängig. Ein fixer Identitätswert wäre also sehr hilfreich (allerdings weiss ich nicht, wie man ihn in .NET ohne Overhead zur Verfügung stellen könnte).


- Stephan
.



Relevant Pages

  • =?iso-8859-1?Q?Re:_Objekt_Identit=E4t?=
    ... angenommen ich habe 1 Million Referenzen in einem Container gespeichert und möchte _effizient_ feststellen, ob ein bestimmtes Anfrageobjekt in dem Container gespeichert ist. ... Wenn mir nur die Gleichheitsprüfung zur Verfügung steht, muss ich 1 Millionen Vergleiche durchführen. ...
    (microsoft.public.de.german.entwickler.dotnet.framework)
  • Re: dynamische objektanordnung
    ... (Factory-Methode) ... Nur wäre bei mir diese Methode kein Member der Form, sondern eines eigenen Objektes. ... Dann könnte man es "überall" einsetzen, auch wenn z.B. das Form gar nicht der eigentliche Container ist. ...
    (microsoft.public.de.fox)

Loading