在列表<;中发现重复记录;T>;具有相同的索引&;哈希代码

本文关键字:amp 代码 哈希 索引 lt 列表 发现 记录 gt | 更新日期: 2023-09-27 18:22:11

我使用的是Visual Studio 2015版本14.0.23107.0 D14REL,我的列表是list<PriceData>,我确信在将PriceData项目添加到列表中之前,我已经检查了它的存在,即使它是重复的,它也应该在列表中有不同的索引,示例代码如下

lock(marketRaw)
{
    if(marketRaw.IndexOf(price.Symbol) < 0)
    marketRaw.Add(price);
}
...
int myidx = 0;
foreach (PriceData item in marketRaw)
{
    myidx++;
    if (item.Symbol == "KLIV5")
        Console.WriteLine("KLIV5 @ " + myidx.ToString() + " ==> " + item.GetHashCode().ToString();
}

这里marketRaw是List<PriceData>,结果低于

KLIV5 @ 606 ==> 40835417
KLIV5 @ 606 ==> 40835417

发生了什么?

在列表<;中发现重复记录;T>;具有相同的索引&;哈希代码

很难理解您的问题,但我认为您所期望的是List<T>将通过Equals和Hashcode确保唯一性。它不会-您应该为此使用HashSet<T>