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

  • Jejoab

    Jejoab

    4 NİSAN 2008
  • L33TNoonProductions

    L33TNoonProd

    24 EYLÜL 2010
  • Peyton

    Peyton

    28 Aralık 2008