birini gerekiyordu neden görmüyorum. 3 farklı öğeler için varsayılan GetHashCode
dayalı bir karma-kod oluşturmak istiyorsanız, o zaman sadece kullanın: güzel
int h1 = lastName.GetHashCode();
int h2 = firstName.GetHashCode();
int h3 = gender.GetHashCode();
return (((h1 << 5) + h1)^(((h2 << 5) + h2)^h3));
:
Tuple.Create(lastName, firstName, gender).GetHashCode()
Yani eşdeğer aşağı kaynatın edeceğiz Böyle genel amaçlı bir kombinasyon için makul. Aynı şekilde
:
Tuple.Create(lastName, firstName, gender).Equals(Tuple.Create(lastName2, firstName2, gender2))
arayarak eşdeğer aşağı kaynatın misiniz:
return ((lastName == null && lastName2 == null) || (lastName != null && lastName.Equals(lastName2)))
&& ((firstName == null && firstName2 == null) || (firstName != null && firstName.Equals(lastName2)))
&& ((gender == null && gender2 == null) || (gender != null && gender.Equals(lastName2)));
Yine, beklenebileceğini yaklaşık olarak iyi.
+1: tupl'lar ve anonim tipler GetHashCode(), Equals() ve ToString() – millimoose
'u uygulamak için mükemmeldir. Tuple sınıflarını kısayol olarak kullanarak güzel bir fikir. Ancak, Tuple.Create (...). Equals (Tuple.Create (...)) 'ın Guava'nın“ equals ”yöntemine eşdeğer olmadığını unutmayın - bu sadece object.quals (x, y) olur '. – LukeH
@LukeH, biz zaten buna sahibiz, ve bizde de var, bu da Guava'dan daha iyisini yapabileceğimiz anlamına geliyor :) –