[英]Delegate in parameter
我有一堆返回GridTiles列表的方法,例如GetTopNeighbour。 我希望能夠使用GetNeighboursHandler委托作為參數將它們傳遞給方法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));
}
在Test方法中,我得到錯誤:...無法將... Generic.List ...轉換為GetNeighboursHandler。 我是否完全誤解了代表的工作方式?
您必須傳遞方法(或方法組)本身,而不是調用它:
AutoConnect(c, GetTopNeighbour);
您正在傳遞GetTopNeighbour(c)
的結果,該結果是List<GridTile>
,作為AutoConnect的參數。
相反,您希望將MethodGroup傳遞給委托,如下所示:
AutoConnect(c, GetTopNeighbour);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.