aramadı üzerine yazılmış Eşittir. Ben her ikisi de eşit olup olmadığını doğrulamak için == operatörünü kullanıyorum ve bunların gerçekten eşit olduklarını doğrulamak için karma kodları aynı ise hem GetHashCode hem de Eşittir. C# GetHashCode/I GetHashCode ile ilgili bir sorun bakan ve bir sınıf için geçersiz hangi Eşittir ediyorum
Ama benim için sürpriz
denilen ve eşitlik testinin sonucu (aslında gerçek olması gerekirken) yanlıştır olsun de.geçersiz kılma kodu:
public class User : ActiveRecordBase<User>
[...]
public override int GetHashCode()
{
return Id;
}
public override bool Equals(object obj)
{
User user = (User)obj;
if (user == null)
{
return false;
}
return user.Id == Id;
}
}
Eşitlik kontrol:
if (x == y) // x and y are both of the same User class
// I'd expect this test to call both GetHashCode and Equals
'o nesne üzerinde' == 'operatörünü kullanır gibi' Equals' yöntemi çağırmak == 'aslında yoktu, o zaman bir yığın taşmasına neden olabilir ... – Guffa
kodunda şey yok ederse Bu, GetHashCode() öğesini çağırmaya ihtiyaç duyduğunu gösterir. Bu sadece nesneyi bir koleksiyonun anahtarı olarak kullanırsanız denir. – RenniePet