Sobes.tech
Junior — Middle

Bir .NET sınıfında neden GetHashCode ve Equals metodları yeniden tanımlanır?

sobes.tech yapay zeka

AI'dan gelen yanıt

.NET'te, GetHashCode ve Equals metodları, nesnelerin doğru karşılaştırılması ve sözlükler (Dictionary) ile küme (HashSet) gibi koleksiyonlarda düzgün çalışması için yeniden tanımlanır.

  • Equals, iki nesnenin anlam olarak eşit sayılma durumunu belirler.
  • GetHashCode, nesnenin hızlıca bulunması için kullanılan sayısal bir kod döndürür.

Sadece Equals metodunu yeniden tanımlarsanız, ancak GetHashCode'u yapmazsanız, nesneler hash koleksiyonlarında düzgün çalışmayabilir. Bu metodlar genellikle birlikte yeniden tanımlanır, böylece tutarlılık sağlanır: Eğer Equals iki nesne için true dönerse, onların GetHashCode değerleri de aynı olmalıdır.

Örnek:

public 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);
    }
}