泛型的Contains()不起作用,在检测重复数据时总返回假

viaivi 2009-02-13 08:33:31

List<LinkInfo> addreList = new List<LinkInfo>();
foreach (Match m in maction)
{
if (m.ToString() != url)
{
LinkInfo links = new LinkInfo(m.ToString());
if (!addreList.Contains(links))
addreList.Add(links);
}
}
}

addreList.Contains()根本不起作用,返回值总为false;查了一下,好像是要重写Equals(),没找到具体资料,谁能帮忙解决一下
...全文
179 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyeede 2009-02-13
  • 打赏
  • 举报
回复
二楼地址下的内容已经讲的很明白了。
viaivi 2009-02-13
  • 打赏
  • 举报
回复
能说下具体方法吗?实在不知道怎么下手
  • 打赏
  • 举报
回复
if (m.ToString() != url)
{
LinkInfo links = new LinkInfo(m.ToString());
if (!addreList.Contains(links))
addreList.Add(links);
}
}

你这样写肯定是每次都为false,因为你add的是一个全新的对象,对象比较默认的equals好像用hashcode来比较的,而每个对象的hashcode都不一样,当然找不到相同的了

你重写equals,用m.Tostring()的值来比较就可以了。
lovefootball 2009-02-13
  • 打赏
  • 举报
回复
在你的LinkInfo类中
public override bool Equals(object obj)
{
//这里重新定义你的Equals,比如你可以认为该对象的一个值相等,则对象相等
}
bj890 2009-02-13
  • 打赏
  • 举报
回复
up

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧