Junior — Middle
Sınıflarda GetHashCode metodunu neden yeniden tanımlamak önemlidir?
sobes.tech yapay zeka
AI'dan gelen yanıt
GetHashCode metodunun üzerine yazılması, Dictionary, HashSet ve diğerleri gibi karma tabanlı koleksiyonlarda nesnelerin doğru çalışması için önemlidir.
Nedenler:
GetHashCode, nesneyi hızlıca bulmak için kullanılan sayısal bir değer döndürür.- Eğer iki nesne eşit kabul edilirse (
Equalsyöntemiyle), aynı hash kodunu döndürmeleri gerekir ki koleksiyonlar bunları doğru şekilde işleyebilsin. GetHashCodeileEqualsbirlikte geçersiz kılınmazsa, nesneler yanlış karşılaştırılabilir veya koleksiyonlarda çoğaltılabilir.
Örnek:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (obj is Person other)
return Name == other.Name && Age == other.Age;
return false;
}
public override int GetHashCode()
{
return HashCode.Combine(Name, Age);
}
}
Bu şekilde, GetHashCode'un yeniden tanımlanması, Equals ile tutarlılığı sağlar ve nesnelerin hash yapılarında doğru çalışmasını temin eder.