C#创建一个方法数组

时间:2014-11-30 16:11:54

标签: c# arrays methods

嗯,一直在寻找这个,但由于我不能更具体,谷歌似乎没有答案,所以我决定在这里问。

无论如何要创建一个返回值的方法数组?

methodArray[0].Invoke();

我可以使用委托吗?如果是这样,怎么样?

就好像我有2个方法需要相同的参数

dobule Add(double number)
{
//code
}
double Remove(double number)
{
//code
}

我需要做什么才能用索引调用它们(我不想处理switch语句)

1 个答案:

答案 0 :(得分:3)

您可以创建Func的数组。但是,这仅限于所有具有相同签名的方法(返回类型,数量和参数类型)。

如果您有多种方法不接受任何参数,您可以像这样使用它:

var methods = new List<Func<T>>();

其中T是返回值中的最低公共对象,可能只是object

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

如果您只想调用void方法,或者不担心返回类型,则可以改为使用Action

var methods = new List<Action>();

无论哪种方式,您都可以这样调用它们:

foreach(var method in methods){
   var result = method();
   //or if you don't care about return type
   method();
}

您可能还会发现此帖子很有用:How do you use Func<> and Action<> when designing applications?

<强>已更新 以下示例显示了如何将此技术用于AddRemove方法:

    public double Add(double number) { return 0;}
    public double Remove(double number) { return 0; }

    public void Example()
    {
        //Array of methods
        var methods = new Func<double, double>[]
        {
            n => Add(n),
            n => Remove(n)
        };

        //Invoking methods
        var number = 0d;
        foreach (var method in methods)
        {
            method(number);
        }
    }