So kommt dies auf den uralten "Pass von Referenz"/"Pässe von Wert" Diskussion.
Da ImageSource
ist ein Referenztyp vergleicht zwei ImageSources
wird die Referenzen vergleichen. NICHT die tatsächlichen Daten.
weil String
ist ein Wert Typ der Vergleich WILL die tatsächliche Zeichenfolge vergleichen und nicht die Referenz.
Für einen wahren Vergleich Ihrer ImageSource
wollen ein Byte[]
und vergleichen Sie die zwei Byte-Arrays konvertieren, da diese Werttypen auf Ihre Frage
Bezug nehmend wird:
Wenn this.cachePath
ist das gleiche Objekt als value
. dh:
this.cachePath = value
this.cachePath == value
//Returns true
ABER wenn cachePath
ist eine Kopie des Bildes value
dann eventho die Bilder gleich sind, weil ihre Referenzen nicht auf das gleiche Objekt zeigen werden
this.cachePath = new ImageSource();
this.value = new ImageSource(cachePath.Source);
this.cachePath == Value
// Returns False
Weil 'ImageSource' ist ein' Reference Type', der zwei 'ImageSources' vergleicht und die Referenzen vergleicht. NICHT die tatsächlichen Daten. Da 'String' eine' Wertart' ist, vergleicht der Vergleich die tatsächliche Zeichenkette und nicht die Referenz. Sie wollen in ein 'Byte []' konvertieren und die beiden Byte-Arrays vergleichen, um einen echten Vergleich zu erhalten. – user1
Ich denke, dass es sehr zeitaufwendig wäre, ein ganzes Bild in ein 'byte []' zu lesen. Gibt es keine Möglichkeit zu wissen, ob die Referenzen auf dieselbe Ressource verweisen? – testing
wenn die Referenzen identisch sind. I.e. 'this.cachePath' ist das gleiche Objekt wie' value'. d.h. 'this.cachePath = value ', dann prüft dies die Referenzen. ABER wenn 'cachePath' eine Kopie des image' value' ist, dann EVENTHO sind die Bilder das selbe Bild, weil sie nicht auf das selbe Objekt 'cachePath == Value' zeigen, würde 'false' zurückgeben – user1