【问题标题】:Statement lambda in Any(LINQ)Any(LINQ) 中的语句 lambda
【发布时间】:2020-11-05 01:52:58
【问题描述】:

我的代码有点问题,也许我是盲人,但我没有看到任何问题

   prefabPool.Any( bullet => 
                                {
                                    if(bullet.activeSelf == false)
                                    {
                                        bullet.SetActive(true);
                                        return true;
                                    }   
                                    return false;  
                                }; 
                                );

这是我的 lambda 语句,编译器在第 9 行给我一个错误

) 预期 [Assembly-CSharp]csharp(CS1026)

实际上我不知道是什么问题,因为我的语法看起来不错

【问题讨论】:

    标签: c# linq unity3d lambda any


    【解决方案1】:

    这一点:

    }; // This is still a parameter inside the .Any( )
    );
    

    只需要最后一个分号:

    });
    

    【讨论】:

    • 我搞砸了语法...我认为规则是:(输入参数)=> { };以分号结尾。谢谢!!!
    • 我现在明白了
    【解决方案2】:

    .Any() 将在找到一个匹配项后停止。恕我直言,使用带有副作用的 lambda 的 .Any() 会降低您的代码的可读性。

    在你的情况下,我会替换为;

        prefabPool.FirstOrDefault(b => !b.activeSelf)?.SetActive(true);
    

    【讨论】:

    • 感谢您的建议!它比我的更具可读性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多