我有一个有趣的问题。 考虑这行代码:
List<bool> selectedValues = allValues.FindAll(x => x);
其中 sallValues 是布尔值列表。 为什么
FindAll()
在 selectedValues 列表中找到所有 true 值,但找不到所有 false 值?
据我所知,我们正在评估 (x =>x) 中的相同值。因此,如果您评估“错误”和“错误”(或“错误”变为“错误”),那么这不应该也是正确的吗?
为什么如果 x = true, (x=>x) == true,
但如果 x = false,则 (x=>x) == false。
我的理解是:
我重写了与以下相同的语法:
List<bool> selectedHobbies = allHobbies.FindAll(hobby => x.Equals(true));
第二个对我来说更能理解。但我无法掌握第一个语法。 因为第二个语法实际上用另一个值检查 x
在
x => x
中,您本质上是在评估表达式 x
,就像您对 x.Equals(true)
所做的那样。因此,它只会选择该表达式计算结果为 true 的值,即集合中的所有 true 值。