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

  • bunliu

    bunliu

    2 Mayıs 2007
  • Darren Kitchen

    Darren Kitch

    3 EKİM 2011
  • sdasmarchives

    sdasmarchive

    2 HAZİRAN 2010