gpt4 book ai didi

c# - 'if' 语句条件中的 Lambda 表达式

转载 作者:可可西里 更新时间:2023-11-01 08:00:29 26 4
gpt4 key购买 nike

我是 C# 的新手,但根据我的理解,这段代码应该可以工作。为什么它不起作用?

这是我的代码示例。

List<Car> cars // This has many cars initialized in it already
if (() => {
foreach(Car car in cars){
if (car.door == null) return true;
}
}){then .......}

简单地说,我想让代码做的就是在任何汽车没有门的情况下运行 if 语句。

尝试编译后出现此错误:

Cannot convert lambda expression to type 'bool' because it is not a delegate type.

最佳答案

如果你想检查是否有车没有门,那么只需使用 Enumerable.Any - 它确定序列中的任何元素是否满足条件:

if (cars.Any(c => c.door == null))
// then ...

只是为了好玩:你应该执行 lambda 以获得 if 条件中的 bool 结果(但对于这种情况使用 Any)

Func<bool> anyCarDoesNotHaveDoor = () => { 
foreach(var car in cars)
if (car.door == null)
return true;
return false;
};

if (anyCarDoesNotHaveDoor())
// then ...

我引入局部变量是为了让事情更清楚。但是你当然可以让这个谜题更复杂

 if (new Func<bool>(() => { 
foreach(var car in cars)
if (car.door == null)
return true;
return false; })())
// then ...

关于c# - 'if' 语句条件中的 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24615722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com