【问题标题】:Any() the result of the expression is always "false"Any() 表达式的结果总是“假”
【发布时间】:2013-11-10 10:04:19
【问题描述】:

准备好MSDN Docs的any()函数的文档后

如果找到匹配条件的对象,Any() 应该返回 true

我有一个文章列表,在要在列表中添加文章之前,我想检查这篇文章是否已经在我的列表中。

foreach (Article a in _lstArticleTemp)
{
    if (_lstMarqueTemp.Any(item => item == a.Marque))
        _lstMarqueTemp.Add(a.Marque);
}

但它说:表达式的结果总是“假”,因为 int 类型的值永远不会等于 int 类型的 null?

【问题讨论】:

  • 在哪里你得到这个错误?
  • a.Marqueitem 是否可以为空?
  • Marque 包含一个 int? Id 和字符串名称
  • @Seb: int?是所谓的 Nullable 类型,文档在这里:msdn.microsoft.com/en-us/library/b3h38hb0.aspx。您将需要使用 Nullable 类型的 HasValueValue 成员。
  • @devshorts 但是== 运算符应该被取消以进行可空比较。 new int() == new int?() 编译得很好,没有警告。

标签: c# list


【解决方案1】:

警告不正确。该代码没有任何问题。它将正常工作,因为 int(和所有其他值类型)的 == 运算符已被提升以支持可空值。

【讨论】:

  • 你是对的,重新编译解决方案后,警告不再存在
猜你喜欢
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
  • 2021-10-09
  • 2023-01-12
  • 1970-01-01
  • 2016-04-10
相关资源
最近更新 更多