यहां समानता तुलनाकर्ता है जो मैंने अभी लिखा है क्योंकि मैं इकाइयों वाली सूची से वस्तुओं का एक अलग सेट चाहता था।IEqualityComparer <T>/सूची <T> के बारे में प्रश्न। डिस्टिंक()
class InvoiceComparer : IEqualityComparer<Invoice>
{
public bool Equals(Invoice x, Invoice y)
{
// A
if (Object.ReferenceEquals(x, y)) return true;
// B
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null)) return false;
// C
return x.TxnID == y.TxnID;
}
public int GetHashCode(Invoice obj)
{
if (Object.ReferenceEquals(obj, null)) return 0;
return obj.TxnID2.GetHashCode();
}
}
- क्यों
Distinct
के रूप में एकFunc<T,T,bool>
जाने के बजाय किसी comparer की आवश्यकता है? - क्या (ए) और (बी) ऑप्टिमाइज़ेशन के अलावा कुछ भी हैं, और क्या वे परिदृश्य हैं, जब वे अपेक्षित तरीके से कार्य नहीं करेंगे, संदर्भों की तुलना में कमजोरी के कारण?
अगर मैं करने के लिए, मैं
return GetHashCode(x) == GetHashCode(y)
यादृच्छिक आत्म agrandizing अवलोकन: यह एक अच्छा परीक्षा quetion –