【问题标题】:C# - Expected a method with 'xxx' signatureC# - 需要一个带有 \'xxx\' 签名的方法
【发布时间】:2022-11-27 10:35:19
【问题描述】:

我在一个棋盘游戏解决方案中有两个项目(MenuSystem 和 GameBrain)。在项目中,我有枚举 EMenuNavigation,它位于 MenuSystem 中,链接添加到 GameBrain。

我有一个 MenuItem 类:

public class MenuItem
{
    private string Title { get; set; }
    public Func<EMenuNavigation>? MethodToRun { get; set; }

    public override string ToString() => Title;

    public MenuItem(string title, Func<EMenuNavigation>? methodToRun)
    {
        Title = title;
        MethodToRun = methodToRun;
    }
}

我的功能如下所示:

public static EMenuNavigation HvH()
{
    var board = new Board(8);
    var gameMenu = new Menu(EMenuLevel.Game, "> Game <");
    gameMenu.MenuItems.Add(new MenuItem("Make A Move", board.MakeMove));
    gameMenu.MenuItems.Add(new MenuItem("Cheat", null));
    gameMenu.MenuItems.Add(new MenuItem("Save The Game", null));

    board.ShowBoard();
    
    return gameMenu.RunMenu();
}

我的问题在这里:

new MenuItem("Make A Move", board.MakeMove)

我收到“需要一个带有‘EMenuNavigation MakeMove()’签名的方法”

Board类中的方法:

public class Board
{

    public EMenuNavigation MakeMove()
    {

        var userMove = GetUserCoords("What do checker you want to move?");

        Console.WriteLine(userMove);
        
        return EMenuNavigation.Stay;
    }
}

问题:如果我已经在班级 Board 中拥有它,为什么“需要一个带有‘EMenuNavigation MakeMove()’签名的方法”,我该如何解决它?

如果我改变

Func<EMenuNavigation>?

Func<int>?

一切都可以工作,但它不会容易阅读,也很难理解数字的含义。 如果我尝试改变我的

gameMenu.MenuItems.Add(new MenuItem("Make A Move", board.MakeMove));

gameMenu.MenuItems.Add(new MenuItem("Make A Move", board.MakeMove()));

我收到另一个错误,也无法解决。

【问题讨论】:

  • 请不要在图片中添加您的代码,使用编辑器将代码添加为文本。也只是在这里添加相关的代码,没有打开图片,但是好像很多。
  • 是否有可能您的解决方案中有两种 EMenuNavigation 类型并且您引用了错误的类型?
  • 当你在 MenuItem 的 ctor 中使用 Func&lt;&gt; 时,试试这个:gameMenu.MenuItems.Add(new MenuItem("Make A Move", () =&gt; board.MakeMove() ));
  • @里沃。谢谢,这对我有帮助

标签: c# function


【解决方案1】:

Lambda 表达式解决了问题。

gameMenu.MenuItems.Add(new MenuItem("Make A Move", () => board.MakeMove() ));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多