C# 是否将委托用作方法执行队列?

C# 是否将委托用作方法执行队列?,c#,xna-4.0,C#,Xna 4.0,这个问题与XNA 4.0游戏有关,因此它自然会有一个简单的游戏执行循环: Init() Load() Update() Draw() 等等 我希望使这个循环尽可能干净,我一直在我的头脑中规划它,我想在实际集成它之前写下我希望事情如何完成。委托作为一种方法队列有多实际 Init() initQueue(RequiredArgs) Load() loadQueue(RequiredArgs) 等等 我会根据需要向队列中添加方法,可能会生成多个委托,这样我就不必向委托中添加100个参数,并

这个问题与XNA 4.0游戏有关,因此它自然会有一个简单的游戏执行循环:

Init()
Load()
Update()
Draw()
等等

我希望使这个循环尽可能干净,我一直在我的头脑中规划它,我想在实际集成它之前写下我希望事情如何完成。委托作为一种方法队列有多实际

Init()
  initQueue(RequiredArgs)
Load()
  loadQueue(RequiredArgs)
等等


我会根据需要向队列中添加方法,可能会生成多个委托,这样我就不必向委托中添加100个参数,并一起执行多个具有类似参数的方法。

据我所知,您有一些选择

首先,列出一个清单,或者列出一些其他清单来容纳您的代表。这样,您就可以在学员中顺利通过

至于参数,您可以:

让它将列表、数组或参数作为输入,这些将是object类型。这允许每周定义输入无限值。你的功能只需要知道哪个是哪个,并希望上帝你插入了正确的功能。我不会推荐这个,除非你不能


b创建一个基本抽象类,作为所有委托函数调用的基本设置。然后为每个需要特定内容的委托创建专门的继承类。这可能会花费更多的时间,但从长远来看,对于维护和可读性来说是值得的。

据我所知,您有一些选择

首先,列出一个清单,或者列出一些其他清单来容纳您的代表。这样,您就可以在学员中顺利通过

至于参数,您可以:

让它将列表、数组或参数作为输入,这些将是object类型。这允许每周定义输入无限值。你的功能只需要知道哪个是哪个,并希望上帝你插入了正确的功能。我不会推荐这个,除非你不能


b创建一个基本抽象类,作为所有委托函数调用的基本设置。然后为每个需要特定内容的委托创建专门的继承类。这可能会花费更多的时间,但从长远来看,为了维护和可读性,这是值得的。

收集通常是一个代表队列的一般想法没有什么错。这是消息循环的合理实现

值得注意的是,如果消息可以从多个线程添加到队列中,那么使用BlockingCollection作为队列的集合是有意义的,这样对集合的多线程访问就不会有问题


具体来说,集合的类型可以是BlockingCollection。不需要管理允许任何其他代理签名。您不需要处理任何输出,也不需要提供任何参数。如果有人希望调用具有参数的方法,他们可以使用lambda(如=>someFunctionparam1,param2;)curry函数来修复参数

集合(通常是代表队列)的一般概念没有错。这是消息循环的合理实现

值得注意的是,如果消息可以从多个线程添加到队列中,那么使用BlockingCollection作为队列的集合是有意义的,这样对集合的多线程访问就不会有问题


具体来说,集合的类型可以是BlockingCollection。不需要管理允许任何其他代理签名。您不需要处理任何输出,也不需要提供任何参数。如果有人希望调用具有参数的方法,他们可以使用lambda(如=>someFunctionparam1,param2;)curry函数来修复参数

谢谢你们,你们俩都很有帮助。我希望我能勾选超过一个人!谢谢你们,你们俩都很有帮助。我希望我能勾选超过一个人!