Co to jest tożsamość referencyjna w języku C #? [duplikować]

Dec 08 2020

Szukam różnicy między operatorem (==) a metodą Equals (). Wiele zasobów mówi, że operator (==) porównuje tożsamość odniesienia. Czym właściwie jest tożsamość referencyjna?

Odpowiedzi

OlivierRogier Dec 08 2020 at 21:48

Oprócz duplikatów publikuję tę odpowiedź, ponieważ pytanie jest bardziej wyspecjalizowane w tym, co znalazłem.

W prostych słowach: tożsamość referencyjna to równość adresów pamięci, ponieważ dwie zmienne wskazują na tę samą treść lub nie, jak adres pocztowy lub szklanka wody. Ponieważ odniesienia są ukrytymi wskazówkami, aby zapomnieć o zarządzaniu nimi.

GC jest również warstwą powyżej, aby ułatwić zarządzanie instancjami obiektów w pamięci i zapomnieć o zniszczeniu / uwolnieniu tych, których już nie używamy.

Operator ==może być przeciążony, aby porównać wartości zamiast odwołań, więc są włączone object Equals()i ReferenceEquals()metody.

Oto kilka samouczków:

C # - typy danych

C # - zmienne

Typ wartości i typ odniesienia

Jak uzyskać liczbę odwołań do obiektu CLR?