【发布时间】:2020-03-26 13:11:06
【问题描述】:
public class Date
{
public int mm;
public int dd;
public Date(int get_mm, int get_dd)
{
mm = get_mm;
dd = get_dd;
}
}
public Dictionary<Date, int> dictionary = new Dictionary<Date, int>();
Date A = new Date(1,1)
Date B = new Date(1,1)
dictionary.Add(A,1);
if(dictionary.ContainsKey(B)) //returns false
...
在这种情况下如何覆盖 Date 类? 我知道这两个对象不一样,但不知道如何使它工作
【问题讨论】:
-
你需要重写
Date的Equals和GetHashCode方法。或者您可以创建一个IEqualityComparer<Date>传递给字典,告诉它如何比较Date对象。 -
最好的方法是使用自定义相等比较器制作字典。 Check this
-
为什么你想从你的例子中获取对象 B 而不是对象 A? A + B 共享相同的值,为什么要保存两次?
-
@user743414 这只是一个例子。我只是想反映我的问题
-
@gaborbozo 这就是我问你要做什么的原因。
标签: c# dictionary overriding