gpt4 book ai didi

c# - 委托(delegate)参数

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:48 25 4
gpt4 key购买 nike

我有很多返回 GridTiles 列表的方法,例如 GetTopNeighbour。我希望能够使用 GetNeighboursHandler 委托(delegate)作为参数将它们传递给方法 AutoConnect。

    public delegate List<GridTile> GetNeighboursHandler(GridTile c);

public List<GridTile> GetTopNeighbour(GridTile c)
{
//do stuff and return list
return null;
}
public GridTile AutoConnect(GridTile c, GetNeighboursHandler del)
{
List<GridTile> tempList = del(c);

// do stuff with the tempList
}

public void Test(GridTile c)
{
AutoConnect(c, GetTopNeighbour(c));
}

在测试方法中我收到错误:...无法将...Generic.List...转换为 GetNeighboursHandler。我是否完全误解了委托(delegate)的工作方式?

最佳答案

您需要传递一个 delegate (这是一个知道如何调用方法的对象,即:它持有方法的引用)您所做的是传递执行后获得的函数结果 GetTopNeighbour(c)返回 List<GridTile> ,并且您在此处的代码中传递此返回值

AutoConnect(c, GetTopNeighbour(c));

相反,您应该传递对该方法的引用 GetTopNeighbour

AutoConnect(c, GetTopNeighbour);

引用这些 This is a tutorialhere's another one

关于c# - 委托(delegate)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56450198/

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