基本上,我希望有一个枚举,其中每个常量引用一个函数(更多的是一个过程,但因为它没有返回任何东西)。
enum Example {first_function, second_function, third_function};
void first_function (){
}
... you get the hang of it
有没有一种方法可以从枚举中调用这样的函数?
提前谢谢你,对不起,我刚开始学习;)
答案 0 :(得分:0)
您可以使用键创建一个包含枚举值的字典,并为要调用的函数赋值。对此方法的唯一限制是,您要调用的所有方法都应具有相同的签名。
如果枚举如下:
enum Example { FirstFunction, SecondFunction, ThirdFunction }
并且方法没有得到任何参数而且它们什么都没有返回(无效),你可以尝试这样的事情:
var dictionary = new Dictionary<Example, Action>
{
{ Example.FirstFunction, FirstFunction },
{ Example.SecondFunction, SecondFunction },
{ Example.ThirdFunction, ThirdFunction }
};
然后你可以找到枚举值的方法并按如下方式调用它:
dictionary[Example.FirstFunction]();
显然你的方法可以返回你想要的任何类型,并获得你想要的任意数量的参数。但是,它们必须具有相同的签名(返回类型和参数)。
答案 1 :(得分:0)
您无法使用enum
来指定某个功能,但如果您的所有功能都具有相同的签名,那么您可以从Dictionary
到{{1}制作enum
}与相应的参数:
Action<...>
您现在可以这样称呼它:
void Function1(int val) {
...
}
void Function2(int val) {
...
}
void Function3(int val) {
...
}
static readonly IDictionary<MyEnumType,Action<int>> MyEnumToAction = new Dictionary<MyEnumType,Action<int>> {
[first_function] = Function1,
[second_function] = Function2,
[thrird_function] = Function3
};