FindAll 布尔类型的 lambda 表达式

问题描述 投票:0回答:1

我有一个有趣的问题。 考虑这行代码:

List<bool> selectedValues = allValues.FindAll(x => x);

其中 sallValues 是布尔值列表。 为什么

FindAll()
在 selectedValues 列表中找到所有 true 值,但找不到所有 false 值? 据我所知,我们正在评估 (x =>x) 中的相同值。因此,如果您评估“错误”和“错误”(或“错误”变为“错误”),那么这不应该也是正确的吗? 为什么如果 x = true, (x=>x) == true, 但如果 x = false,则 (x=>x) == false。

我的理解是:

  1. 假等于假(这使得它为真)
  2. true 等于 true(这也使其为 true) 为什么 1) 不正确

我重写了与以下相同的语法:

List<bool> selectedHobbies = allHobbies.FindAll(hobby => x.Equals(true));

第二个对我来说更能理解。但我无法掌握第一个语法。 因为第二个语法实际上用另一个值检查 x

c# list lambda findall
1个回答
0
投票

x => x
中,您本质上是在评估表达式
x
,就像您对
x.Equals(true)
所做的那样。因此,它只会选择该表达式计算结果为 true 的值,即集合中的所有 true 值。

© www.soinside.com 2019 - 2024. All rights reserved.