为什么Enumerable.All对于空序列返回true?

var strs = new Collection();

bool b = strs.All(str => str == “ABC”);

该代码创建一个空的字符串集合,然后尝试确定集合中的所有元素是否均为“ ABC”。如果您运行它,b将是真实的。

但是集合中甚至没有任何元素,更不用说任何等于“ ABC”的元素了。

这是错误,还是有合理的解释?

回答:

当然不是错误。它的行为与记录的完全相同:

如果源序列中的每个元素都通过指定谓词中的测试, , true;否则为true 。否则为假。

现在您可以争论它是否 应该以 这种方式工作(对我来说似乎很好;序列中的每个元素都符合谓词),但是在询问是否存在错误之前 首先要检查的

是文档。(这是检查方法以预期之外的其他方式进行操作时的第一件事。)

以上是 为什么Enumerable.All对于空序列返回true? 的全部内容, 来源链接: utcz.com/qa/398970.html

回到顶部