提问人:NoImagination 提问时间:9/28/2022 更新时间:9/28/2022 访问量:59
为什么 IEqualityComparer 无法按预期工作?[关闭]
Why IEqualityComparer doesn't work as expected? [closed]
问:
为什么 EqualityComparer 不起作用?
它应该只留下 2 个元素,其中 相等 - 和 .相反,它由 和 组成,但它们的值不相等。
函数为第 1 个和第 3 个元素返回相同的哈希码!MyEqComp
arr
Values
myDic["1"]
myDic["3"]
Value="456"
myDic["1"]
myDic["2"]
GetHashCode
public class Program
{
public static Dictionary<string,string> myDic = new Dictionary<string,string>();
public static void Main()
{
myDic.Add("1","456");
myDic.Add("2","567");
myDic.Add("3","456");
var arr=myDic.Distinct(new MyEqComp());
foreach (var n in arr)
{
Console.WriteLine("key="+n.Key+",value="+n.Value+"\n");
}
}
class MyEqComp:IEqualityComparer<KeyValuePair<string,string>>{
public bool Equals(KeyValuePair<string,string> pair1, KeyValuePair<string,string> pair2){
Console.WriteLine("pair1="+pair1+",pair2="+pair2);
return pair1.Value == pair2.Value;
}
public int GetHashCode(KeyValuePair<string,string> pair){
var code = pair.Value.GetHashCode();
Console.WriteLine("code="+code);
return code;
}
}
}
和输出
code=-121858068
key=1,value=456
code=437991364
key=2,value=567
code=-121858068
pair1=[1, 456],pair2=[3, 456]
答:
0赞
NoImagination
9/28/2022
#1
答:代码正确且按预期工作。
评论
Distinct