C# 在C中存储方法列表#

C# 在C中存储方法列表#,c#,.net,.net-3.5,C#,.net,.net 3.5,我有一个方法列表,我想按特定顺序调用它。因此,我希望将它们存储在有序列表或具有指定索引的表中。这样,列表将是唯一能改变我们想要改变通话顺序的日期 我发现了如何使用数组和委托进行解释。但我在评论和其他一些地方读到,也可以使用字典或LinQ来完成。有什么建议吗?您可以定义Action对象,这些对象是返回void的无参数委托。每个操作都是指向方法的指针 // Declare the list List<Action> actions = new List<Action>();

我有一个方法列表,我想按特定顺序调用它。因此,我希望将它们存储在有序列表或具有指定索引的表中。这样,列表将是唯一能改变我们想要改变通话顺序的日期


我发现了如何使用数组和委托进行解释。但我在评论和其他一些地方读到,也可以使用字典或LinQ来完成。有什么建议吗?

您可以定义
Action
对象,这些对象是返回
void
的无参数委托。每个操作都是指向方法的指针

// Declare the list
List<Action> actions = new List<Action>();

// Add two delegates to the list that point to 'SomeMethod' and 'SomeMethod2'
actions.Add( ()=> SomeClass.SomeMethod(param1) );
actions.Add( ()=> OtherClass.SomeMethod2() );

// Later on, you can walk through these pointers
foreach(var action in actions)
    // And execute the method
    action.Invoke();
//声明列表
列表操作=新建列表();
//将指向“SomeMethod”和“SomeMethod2”的两个代理添加到列表中
actions.Add(()=>SomeClass.SomeMethod(param1));
actions.Add(()=>OtherClass.SomeMethod2());
//稍后,您可以遍历这些指针
foreach(行动中的var行动)
//并执行该方法
action.Invoke();

我建议您看看。希望这就是你所期待的。

为什么不考虑使用它的FIFO,将代理委托给<代码>队列> />代码,当你调用<代码> DESCORE 时,它将以特定的方式调用你的方法。< /P> 使用多播委托怎么样?它将委托存储在链接列表中,因此当您调用Invoke()时,它将以指定的方式被调用。

队列怎么样

var queue=new queue();
排队(()=>foo());
排队(()=>bar());
while(queue.Count!=0)
{
Action Action=queue.Dequeue();
动作();
}
您可以使用
列表
来满足您的需求:

delegate void MyFunction(...);
List<MyFunction> delegateList;

字典
是用来查找的。

顺便说一句,你可以省略Invoke(),只需调用action(),一切都可以,但队列比列表更适合OP的任务,不是吗?我不这么认为。它只是一个静态列表,不需要排队或出列任务,因为它们不会动态变化。他可能想重新运行批处理几次,等等。
delegate void MyFunction(...);
List<MyFunction> delegateList;
delegate void MyEvent(...);
event MyEventEventHandler MyEvent;