gpt4 book ai didi

c# - 委托(delegate)名单和调用

转载 作者:太空狗 更新时间:2023-10-29 21:30:43 25 4
gpt4 key购买 nike

我正在 ASP.NET 中创建一个较小的 RPG 游戏。在这个游戏中,我有一个项目架构,其中每个项目都有一些方法。例如,所有项目都应该共享一个方法,如“Drop”、“Examine”和“Use”。有些项目必须使用“Operate”、“Calculate”等方法进行扩展。

到目前为止,我已经创建了以下对象 GameActionList:

public delegate void MyDelegate();

public class GameActionList
{
public List<MyDelegate> Items = new List<MyDelegate>();

public void Add(MyDelegate del)
{
Items.Add(del);
}

public void CallDelegates()
{
foreach (MyDelegate myDelegate in Items)
{
myDelegate();
}
}
}

我有一个 BaseItem 类,它有这个 GameActionList。 BaseItem类中this的get属性是这样的:

    public GameActionList Actions 
{
get
{
GameActionList actions = new GameActionList();
actions.Add(this.Drop);
actions.Add(this.Examine);
return actions;
}
}

这很好,但是......我有一些问题!

我的问题

我需要一种更通用的 GameActionList。我不仅需要一个 void 列表,还需要一个函数列表。此外,我需要带参数和不带参数的方法。

例如:Drop 方法需要一个 Player 对象,这样他就可以放下元素。 Examine 方法需要返回描述该项目的字符串。

另外,我需要一些我在初始化 GameActionList 时不知道的数据:我在调用方法时首先知道这些数据...

所以我有两个问题:

  1. 如何扩展 GameActionList,使其可以同时包含 void 和 functions 的列表,而且它们都可以有参数或没有参数......(它甚至有意义吗??)
  2. 我如何在循环的后期(例如调用时)向该方法提供一些数据?

此外...这可能是一种非常愚蠢的方法,所以如果您有更优雅的解决方案...我非常愿意听到它!

非常感谢...!拉斯

最佳答案

您很可能需要 Action 和 Func 委托(delegate)

Func

Action

关于c# - 委托(delegate)名单和调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4297453/

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