C# 创建方法数组
本文关键字:数组 方法 创建 | 更新日期: 2023-09-27 18:32:35
好吧,一直在寻找这个,但由于我不能更具体,谷歌似乎没有答案,所以我决定在这里问。
无论如何要创建一个返回值的方法数组?
喜欢
methodArray[0].Invoke();
我可以使用委托吗?如果是这样,如何?
就像我有 2 个需要相同参数的方法
一样dobule Add(double number)
{
//code
}
double Remove(double number)
{
//code
}
我需要做什么才能用索引调用它们(我不想处理 switch 语句)
您可以创建一个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<>?
更新下面的示例显示了如何将此技术与Add
和Remove
方法一起使用:
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);
}
}