var strs = new Collection<string>();
bool b = strs.All(str => str == "ABC");

代码创建一个空字符串集合,然后try 确定集合中的所有元素是否都是"ABC".

但是集合中甚至没有任何元素,更不用说等于"abc"的任何元素了.

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

推荐答案

这当然不是一个虫子.它的表现恰好是as documented:

如果源序列的每个元素都通过了指定谓词中的测试,则为or if the sequence is empty;否则就错了.

现在您可以争论它should是否以这种方式工作(对我来说似乎很好;序列的每个元素都符合谓词),但是在您询问某事是否为bug之前的very first thing to check是文档.(一旦方法的行为与您预期的不同,首先要判断它.)

.net相关问答推荐

通过交互服务器渲染模式和流渲染的组合防止双重渲染

通过 System.Net.Mail 的 VB SMTP 停止工作

如何判断属性设置器是否公开

您如何确定两个 HashSet 是否相等(按值,而不是按引用)?

每 X 秒执行一次指定函数

在 C# DllImport 中使用 32 位或 64 位 dll

在 WPF 窗口中获取当前聚焦的元素/控件

如何明智地使用 StringBuilder?

SubscribeOn 和 ObserveOn 有什么区别

ReaderWriterLock 与锁{}

.NET - 实现捕获所有异常处理程序的最佳方法是什么

DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") 返回上午时间而不是下午时间?

Java 和 .NET 技术/框架的类似物

在 ToString() 之前判断 null

SQLParameter 如何防止 SQL 注入?

您可以使用 Xamarin 开发 Linux 应用程序吗?

C# List<> 按 x 然后 y 排序

如何向 C# Winforms 中的标签添加提示或工具提示?

System.IO.IOException:使用 System.IO.Path.GetTempFileName() 时文件存在 - 解决方案?

在 .NET 中乘以时间跨度