在c#集合列表的众多扩展方法中,Any方法和All方法是比较常用。
Any语义:任意一个元素满足条件则返回true,否则返回fase;
All语义:所有元素满足条件则返回true,否则返回false
但是,如果集合本身是空集,即集合元素个数为0,可能会对使用者的正常逻辑产生混淆
当集合是空集的情况,Any方法和All方法,会忽略条件判断语句,以空集的意义返回判断结果。
即:当集合为空集时:Any方法返回false,All方法返回true。
这对新手来说是一个不小的坑,下面是测试代码
List<string> list = new List<string>();
var b1 = list.All(c => false); //输出 true
var b2 = list.All(c => false);//输出 true
var b3 = list.Any(c => true)//;输出 false
var b4 = list.Any(c => false);//输出 false