![](/img/trans.png)
[英]Overriding the Equals and GetHashCode of a type, which has 'dibs'?
[英]EqualityComparer<Type> GetHashCode and Equals
我有一個帶有自定義比較器的類型字典(字典),因為我們要存儲2個給定類型之間的關系(用於MVVM模式),並且我需要幫助以尋求使自定義EqualityComparer正常工作的方法。
做一些研究后,我發現GetHashCode方法在Equals方法之前被調用,如何正確獲得哈希碼?預期的行為是,如果我嘗試從字典中獲取“ Square”,並且它具有“ GeometricShape”已經存在,它返回“ GeometricShape”的值,我找不到以給定預期結果的方式對其進行哈希處理的方法
public class DictionaryComparer : EqualityComparer<Type>
{
public override bool Equals(Type x, Type y)
{
return x.IsAssignableFromType(y);
}
public override int GetHashCode(Type obj)
{
return obj.GetHashCode();
}
}
您不能使用將“ assignable from”用作等效操作的比較器。
Equals
具有由依賴它的類假定的特定規則。 如果違反規則,使用這種比較器的結果本質上將是隨機混洗。
請參閱重載等於准則()
x.Equals(x)
返回true。
x.Equals(y)
返回與y.Equals(x)
相同的值
如果(x.Equals(y) && y.Equals(z))
返回true,則x.Equals(z)
返回true。
我不太確定如何解決您的特殊情況,也許如果您只需要將一種類型映射到另一種類型,則只需使用Dictionary<Type,Type>
並將類型直接放入其中即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.