C# 创建方法数组

本文关键字:数组 方法 创建 | 更新日期: 2023-09-27 18:32:35

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

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

喜欢

methodArray[0].Invoke();

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

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

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

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

C# 创建方法数组

您可以创建一个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();
}

您可能还会发现这篇文章很有用:在设计应用程序时如何使用 Func<> 和 Action<>?

更新下面的示例显示了如何将此技术与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);
        }
    }