16 EYLÜL 2008, Salı
Nasıl hem dizeleri değiştirilebilir iki dize yapısı için GetHashCode uygulamak,
C BÄ°R YAPISI VAR#:
public struct UserInfo
{
public string str1
{
get;
set;
}
public string str2
{
get;
set;
}
}
Tek kural UserInfo(str1="AA", str2="BB").Equals(UserInfo(str1="BB", str2="AA"))
Nasıl bu yapı için GetHashCode işlevi geçersiz kılmak için?
CEVAP
16 EYLÜL 2008, Salı
MSDN:
Karma bir işlevi aşağıdaki özelliklere sahip olmalıdır:
- Eğer iki nesne eşit karşılaştırmak, her nesne için
GetHashCode
yöntem aynı değeri döndürür. Eğer iki nesne eşit karşılaştırma değil, ancak iki nesne içinGetHashCode
yöntemleri farklı değerler dönmek zorunda değilsiniz.- Bir nesne için
GetHashCode
yöntemi sürekli aynı karma koduEquals
... ... belirleyen bir nesne durumuna değiştirme yöntemi yok sürece dönmelidir. Bu uygulamanın geçerli yürütme için doğrudur, ve farklı bir hash kodu eğer uygulamayı yeniden çalıştırmak ise iade edilebilir unutmayın.- En iyi performans için bir karma işlev her giriş için rastgele bir dağıtım oluşturmak gerekir.
Dikkate alarak doÄŸru yoldur:
return str1.GetHashCode() ^ str2.GetHashCode()
^
diÄŸer deÄŸiÅŸmeli operasyon ile deÄŸiÅŸtirdi
Bunu PaylaÅŸ:
Nasıl bir PostgreSQL '' sorg...
Nasıl iPhone dizeleri içine dize bölme...
Nasıl Listesi< tüm dizeleri Dönüştür...
Nasıl JavaScript ile boş bir dize için...
Bir dize kontrol etmek için nasıl &quo...