gpt4 book ai didi

c# - .NET - 扩展列表类中的 FindIndex() 编译错误

转载 作者:行者123 更新时间:2023-11-30 22:30:26 27 4
gpt4 key购买 nike

在 .Net/C# 中,我有一个派生自 List 的类。当我尝试使用该派生类的 FindNextIndex 成员时,出现如下编译错误。

错误 3 参数 1:无法从“方法组”转换为“System.Predicate”

错误 2 The best overloaded method match for 'System.Collections.Generic.List.FindIndex(System.Predicate)' has some invalid arguments

下面是一些简化的代码。

class CTileBag:List<int>
{
...
}

然后我尝试在另一个类中使用它

CTileBag c = new CTileBag();
int idx = c.FindIndex(IsSwamp);

IsSwamp 是在我使用 CTile 包的类中定义的

private static bool IsSwamp(TerrainType type)
{
if (type == TerrainType.TT_FUNGUS_SWAMP)
return true;
return false;
}

最佳答案

您的谓词采用 TerrainType ,但您的列表是 List<int> .谓词类型取决于列表类型。听起来你的瓷砖包应该实际上List<TerrainType> ,此时它应该可以工作。

但是:

  • 我一般建议不要List<int>派生.更喜欢组合而不是继承 - 我怀疑让你的 tile 包类型 contain a List<T> 会更好.
  • 遵循 .NET 命名约定:不要在类前加上 C 前缀,并让你的枚举值只是 PascalCased,比如 FungusSwamp而不是 TT_FUNGUS_SWAMP .
  • 您的方法体可以简化为:

    return type == TerrainType.FungusSwamp;

关于c# - .NET - 扩展列表类中的 FindIndex() 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9656453/

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