C# 如何创建方法列表,然后执行它们?

C# 如何创建方法列表,然后执行它们?,c#,list,methods,C#,List,Methods,我试图创建一个包含方法的列表,在添加一些方法后,我想执行它们,这可能吗 我试过这样的方法: List<object> methods = new List<object>(); 但是当我添加时,程序将调用这些方法,例如,在本例中,它调用了Move()您可以使用委托。创建代理列表。然后,对于要添加到列表中的每个方法,创建一个委托并添加到列表中 List<Delegate> methods = new List<Delegate>(); //

我试图创建一个包含方法的列表,在添加一些方法后,我想执行它们,这可能吗

我试过这样的方法:

List<object> methods = new List<object>();

但是当我添加时,程序将调用这些方法,例如,在本例中,它调用了
Move()

您可以使用委托。创建代理列表。然后,对于要添加到列表中的每个方法,创建一个委托并添加到列表中

 List<Delegate> methods = new List<Delegate>();

 // creates an Action delegate implicitly
 methods.Add((Action)Move);
List方法=新列表();
//隐式创建动作委托
方法:添加((操作)移动);

这是
操作
通用委托的一个很好的用例

List<Action> functions = new List<Action>();
functions.Add(Move);

foreach (Action func in functions)
   func();
列表


有关.NET提供的不同类型的委托的更多信息:

我不确定这是否超出了原始问题的范围(或对其他任何人都有帮助),但我一直回到本页,搜索如何创建一个返回类型函数列表以进行迭代和执行。最后,我使用
列表
创建了一个类型方法列表-

        bool RTrue()
        {
            Console.WriteLine("RETURNS TRUE");
            return true;
        }

        bool RFalse()
        {
            Console.WriteLine("RETURNS FALSE");
            return false;
        }

        List<Func<Boolean>> functions = new List<Func<Boolean>>();
        functions.Add(RTrue);
        functions.Add(RFalse);

        foreach (Func<Boolean> func in functions)
        {
            if (func() == true)
            {
                Console.WriteLine("IT WORKS");
            }
        }
boolrtrue()
{
Console.WriteLine(“返回TRUE”);
返回true;
}
布尔费尔斯()
{
Console.WriteLine(“返回FALSE”);
返回false;
}
列表函数=新列表();
函数。添加(RTrue);
函数。添加(RFalse);
foreach(函数中的Func Func)
{
如果(func()==true)
{
Console.WriteLine(“它工作”);
}
}
有关Func用法的详细信息-

根据需要的参数:

var Actions = new List<Action<object, EventArgs>>
{
    ReconfirmOrderlines_Click,
    ModifyOrderlines_Click
};

var Actions=new List

感谢您的关注(:是否需要一个
列表
?似乎只是简单地定义
操作你的函数;
并通过
+=
将方法附加到它上,就像这样
你的函数+=DoThis;你的函数+=DoThat;
一样。唯一的缺点是,我不太确定它在内部是如何迭代的,所以如果你需要那种级别的控制,就创建一个列表可能更合适。@bigp您可以这样做,因为所有委托都是多播的。我个人喜欢在这里明确表示;如果我想使用+=我将只使用事件。正如您所说,这基本上是一种风格,虽然原始问题不需要参数,只返回标题问题可能意味着来这里的人可能正在观看g表示其他内容。可能值得添加“进一步阅读”的链接。我会自己做,但对语言不够熟悉。@AnnanFay我添加了一个指向一些额外信息的链接,希望您的关注无法从“方法组”转换为“操作”,我在尝试执行此操作时看到此错误
        bool RTrue()
        {
            Console.WriteLine("RETURNS TRUE");
            return true;
        }

        bool RFalse()
        {
            Console.WriteLine("RETURNS FALSE");
            return false;
        }

        List<Func<Boolean>> functions = new List<Func<Boolean>>();
        functions.Add(RTrue);
        functions.Add(RFalse);

        foreach (Func<Boolean> func in functions)
        {
            if (func() == true)
            {
                Console.WriteLine("IT WORKS");
            }
        }
var Actions = new List<Action<object, EventArgs>>
{
    ReconfirmOrderlines_Click,
    ModifyOrderlines_Click
};
var actions = new List<(string, Action<object, EventArgs>)>
{
    ("Send confirmation", ReconfirmOrderlines_Click),
    ("Send modification", ModifyOrderlines_Click),
};