error CS1739:“All”的最佳重载没有名为“g”的参数[关闭]

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

我正在尝试为 m rpg 游戏创建任务系统,但过载显示错误..我不知道如何修复它

当我试图检查任务是否完成而不是超载时它显示错误任何人都可以帮助解决这个问题我已经伤脑筋了 2 天

first part of this code

next part of the code

写完上面的代码后,下面的代码显示错误

private void CheckGoals()
{
    Completed = Goals.All(g:QuestGoal=>g.Completed);    
    if (Completed)
    {
        QuestCompleted.Invoke(arg0: this);
        QuestCompleted.RemoveAllListeners();
    }
}
c# unity3d
1个回答
0
投票

您不需要在

All
方法的 lambda 表达式中指定参数的类型,因此要修复代码,只需将此行带到通常的 lambda 表达式即
(parameters) => expression
:

Completed = Goals.All(g => g.Completed);

当您在

All
序列上调用
IEnumerable<QuestGoal>
方法时,您传递了一个定义谓词函数的 lambda 表达式。 lambda 表达式由 C# 编译器编译成与
Func<QuestGoal, bool>
委托类型的签名相匹配的委托。由于 C# 编译器可以根据序列中元素的类型推断出 lambda 表达式的类型,因此您无需在 lambda 表达式中显式指定参数的类型
QuestGoal

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