SORU
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çin GetHashCode yöntemleri farklı değerler dönmek zorunda değilsiniz.
  • Bir nesne için GetHashCode yöntemi sürekli aynı karma kodu Equals ... ... 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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boburnham

    boburnham

    11 Temmuz 2006
  • The Warp Zone

    The Warp Zon

    24 AĞUSTOS 2007
  • TouchePro

    TouchePro

    27 EYLÜL 2007