/ / Dlaczego otrzymuję dwa różne kody skrótu? - c #

Dlaczego otrzymuję dwa różne kody skrótu? - c #

To jest mój kod. Dlaczego kod skrótu moich dwóch obiektów nie jest taki sam?

public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

static void Main(string[] args)
{
Person p1 = new Person()
{
Age = 21,
Name = "Anna"
};

Person p2 = new Person()
{
Age = 21,
Name = "Anna"
};

int i = p1.GetHashCode();
int j = p2.GetHashCode();

Console.ReadLine();
}

Odpowiedzi:

7 dla odpowiedzi № 1

Ponieważ nie zastępujesz GetHashCode, będziesz używać System.Object wersja przez dziedziczenie.

Metodę GetHashCode można zastąpić typem pochodnym. Jeśli GetHashCode nie zostanie zastąpione, kody mieszające dla typów referencyjnych są obliczane przez wywołanie metody Object.GetHashCode klasy podstawowej, który oblicza kod skrótu na podstawie odwołania do obiektu

Innymi słowy, ponieważ „nie są takie same instancja obiektu, nie będą mieć tego samego kodu skrótu.

Aby mieć taki sam kod skrótu, będziesz musiał zaimplementować własny kod GetHashCode, nadpisując go w klasie Person, na przykład prosty;

public override int GetHashCode ()
{
return Name.GetHashCode () ^ Age.GetHashCode ();
}

2 dla odpowiedzi nr 2

Ponieważ nie są tym samym obiektem, po prostu przechowują te same dane.