为什么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