Har*_*rry 18 c# dictionary list containskey
我有一个由List键入的字典:
private Dictionary<List<custom_obj>, string> Lookup;
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用ContainsKey,但它似乎没有工作,我不知道为什么.以下是我的Visual Studio立即窗口的调试信息:
?Lookup.Keys.ElementAt(7)[0]
{custom_obj}
Direction: Down
SID: 2540
?Lookup.Keys.ElementAt(7)[1]
{custom_obj}
Direction: Down
SID: 2550
searchObject[0]
{custom_obj}
Direction: Down
SID: 2540
searchObject[1]
{custom_obj}
Direction: Down
SID: 2550
?Lookup.ContainsKey(searchObject)
false
Run Code Online (Sandbox Code Playgroud)
在我的常识中,最后一个ContainsKey应该是真的.希望我在这里包含了足够的信息......任何想法?
谢谢!
Ken*_*rey 11
您有两个List包含相同元素的单独s.找出两个列表是否相等的正确方法是使用该SequenceEqual方法.
默认情况下,您无法执行您要执行的操作.但是,您可以编写自定义IEqualityComparer并将其传递给Dictionary构造函数.
这是一个通用示例IEqualityComparer:
class ListComparer<T> : IEqualityComparer<List<T>>
{
public bool Equals(List<T> x, List<T> y)
{
return x.SequenceEqual(y);
}
public int GetHashCode(List<T> obj)
{
int hashcode = 0;
foreach (T t in obj)
{
hashcode ^= t.GetHashCode();
}
return hashcode;
}
}
Run Code Online (Sandbox Code Playgroud)
您可能希望改进GetHashCode实施,因为这是一个快速而肮脏的解决方案.
| 归档时间: |
|
| 查看次数: |
9644 次 |
| 最近记录: |