Ich lese, dass Delegierter unveränderliche Objekte sind.Delegierter immutability und Zuweisungsoperator
Wenn ich in ein Gewinde haben:
EventHandler handler = (s, e) => Console.WriteLine("...");
EventHandler copy = handler;
copy(new object(), EventArgs.Empty);
, die ein Thread Sicherheitsoperationen kopieren ist so, wenn ich copy(...)
berufen, wenn ein anderer Thread den Delegaten aus handler
keine Ausnahme auslösen kann eliminiert.
Jedoch Wenn ich machen, das heißt ,:
handler.GetHashCode()
und copy.GetHashCode()
sie beide wieder den gleichen Code.
Ich dachte, dass der Zuweisungsoperator eine neue Instanz dieser Delegierten und dass die neue Referenzgröße setzen in copy
hatte tat ...
Wie kann somit copy
und handler
unabhängig sein, wenn sie beide Referenzen das gleiche Objekt im Speicher?
Verwirrt!
Ihre eigentliche Frage scheint zu sein _ "bedeutet ein gleicher Hashcode, dass beide Variablen auf dieselbe Instanz verweisen" _, auf die die Antwort "nein" lautet. – CodeCaster
@CodeCaster In diesem Fall verweisen beide Variablen jedoch auf dasselbe Objekt. – juharr
Unveränderbar bedeutet, dass Sie das Objekt nicht ändern können. Sie können jedoch 'handler' ein neues Objekt zuweisen (oder es sogar auf null setzen), und diese Änderung wirkt sich nicht auf 'copy' aus. – juharr