You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在Array.Exists条件迭代中需指定element=>element语法?

为什么代码A无法运行,必须使用代码B?

核心原因:参数类型不匹配

Array.Exists方法的第二个参数要求传入一个谓词委托——简单说就是一段能接收数组里的单个元素、返回布尔值的判断逻辑,而不是一个已经计算好的布尔值。

代码A的问题

element == collision.gameObject.layer是一个直接计算的布尔表达式,它会立刻得出true或false的固定结果,完全不符合Array.Exists需要的“可复用的判断逻辑”要求,编译器会因为参数类型不匹配直接报错。

代码B的正确逻辑

element => element == collision.gameObject.layer是C#的Lambda表达式,它等价于定义了一个匿名的判断方法:

bool MatchLayer(int element)
{
    return element == collision.gameObject.layer;
}

当Array.Exists遍历数组时,会把每个元素依次传入这个Lambda表达式,执行判断逻辑并返回结果,完全满足方法的参数要求,因此能正常运行。

内容的提问来源于stack exchange,提问作者RadiantCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:32:04