包含总是错误的,因为引用不一样?

发布于 2024-12-01 21:26:00 字数 316 浏览 5 评论 0原文

我正在实现一个应用程序,您必须在其中验证某个对象是否在列表中。我知道 .contains 会发生这种情况,但我用 XML 文件填充列表,然后检查列表是否包含此文件的对象是新创建的,因此引用不相同,并且.Contains 始终为 false。
有人知道解决这个问题吗?代码如下:

if (qfs.Contains(exa.Question.File))
{
    booleansQuestionFile[i] = true;
}

if 语句始终为 false。

I am implementing an application, in which you have to validate if some object is in a list. This happens with .contains I know, but I fill up my list with an XML file, and then the object which I check if the list contains this, is newly created so the references are not the same and .Contains will always be false.
Someone who knows to fix this problem? This is the code:

if (qfs.Contains(exa.Question.File))
{
    booleansQuestionFile[i] = true;
}

The if statement is always false.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

偏爱你一生 2024-12-08 21:26:00

文档中所述,包含使用默认的相等比较器。要更改默认行为,请让您的类实现 IEquatable或覆盖 等于

As described in the documentation, Contains uses the default equality comparer. To change the default behavior, make your class implement IEquatable<T> or override Equals.

陌路黄昏 2024-12-08 21:26:00

您应该重写 Equals 方法您可以定义两个对象何时相同的方式。

You should override the Equals method That way you can define when two objects are the same.

满天都是小星星 2024-12-08 21:26:00

存储在列表中的对象应该实现 IEquatable。这样,引用不同并不重要,它仍然会正确地比较它们是否相等。


以下是显示示例的文章链接。这个 博客文章有更多细节。

The objects that are stored in the list should implement IEquatable. This way it does not matter that the references are different it will still compare them for equality properly.


Here is a link to an article that shows an example. And this blog post goes into more detail.

-小熊_ 2024-12-08 21:26:00

您也可以使用这样的代码,它将节省您更改类的需要:

if (qfs.Exists(f => f.Question.File.Equals(exa.Question.File)))
{
    booleansQuestionFile[i] = true;
}

You can also have such code instead, it will save you the need to change the class:

if (qfs.Exists(f => f.Question.File.Equals(exa.Question.File)))
{
    booleansQuestionFile[i] = true;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文