![](/img/trans.png)
[英]How does Dictionary<T> work with key objects that don't implement Equals and GetHashCode?
[英]Whats the cleanest/best way to implement Equals and GetHashCode on 3rd party types you don't have access to?
問題是您有第三方類型,例如下面的ClassA。 我沒有訪問代碼的權限,並且沒有實現Equals和GetHashCode,因此我需要編寫一個包裝類。 Equals和GetHashCode隱式函數應使用所有私有成員字段。
最好的方法是什么? 我應該使用快捷方式還是模式?
謝謝
public class ClassA
{
public int FieldA {get; set;}
public double FieldB { get; set; }
public string FieldC { get; set; }
}
如果需要將ClassA
用作字典鍵,則可以實現自己的實現IEqualityComparer<ClassA>
,並將其傳遞給字典的構造函數。 這使您可以覆蓋類型的GetHashCode
和Equals
方法。
我將從ClassA繼承並覆蓋Equals
和GetHashCode
。
您將需要基於公共屬性來實現,因為您無法訪問私有字段。
從ClassA繼承您自己的類,然后在其中實現GetHashCode和Equals。
按照上面的Griver和Driis-繼承或聚合ClassA並基於a屬性實現Equals。
MSDN 在此處發布一些准則
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.