我正在尝试找到最可重用但最优雅的代码段,用于确定是否为 IEnumerable。理想情况下,这应该是一个我可以在需要判断 IEnumerable 是否为空时绝对调用的函数。
虽然我已经为 .NET 3.5 开发了一个到目前为止对我来说效果很好的答案,但我目前的想法是没有完美的答案,因为 IEnumerable 可以在技术上封装一个集合(或迭代器队列),将底层结果修改为它会迭代,这会导致问题。但是,这也会成为实现 IEnumerable.Count() 的障碍,但这并没有阻止 MS 提供它。
所以我想我会把它交给 SO 看看是否有人有更好的,以防其他人发现它有用。
编辑: 哇,我不敢相信我不知道 IEnumerable.Any。我知道它存在,但从来没有费心去检查它做了什么。让这成为一个教训。阅读文档。仅仅因为方法名称并不意味着它会做你想做的事,并不意味着它不会做你想做的事。