我最近开始使用C#,我曾经想在C#中轻松完成一些我想要实现的东西.
例如,我有一个像这样的功能:
def my_func():
return "Do some awesome stuff"
Run Code Online (Sandbox Code Playgroud)
还有一本字典:
my_dic = {"do": my_func}
Run Code Online (Sandbox Code Playgroud)
我制作了一个脚本,当用户输入"do"时,程序会my_func根据字典调用.
我想知道如何将函数分配给C#字典中的字符串.
Evk*_*Evk 50
基本上以同样的方式:
static void Main() {
var dict = new Dictionary<string, Action>();
// map "do" to MyFunc
dict.Add("do", MyFunc);
// run "do"
dict["do"]();
}
static void MyFunc() {
Console.WriteLine("Some stuff");
}
Run Code Online (Sandbox Code Playgroud)
Ada*_*m E 18
您可以在此处利用集合初始值设定程序语法.
var my_dic = new Dictionary<string, Action>
{
{ "do", my_func }
};
Run Code Online (Sandbox Code Playgroud)
对于更复杂的函数,您可以Action使用适当的Function类型替换声明.
与您的示例最直接类似的C#代码片段是:
string my_func() {
return "Do some awesome stuff";
}
Run Code Online (Sandbox Code Playgroud)
和:
var my_dic = new Dictionary<string, Func<string>> {
{ "do", my_func },
};
Run Code Online (Sandbox Code Playgroud)
正如其他海报所指出的那样,技巧是创建一个字符串,其泛型值类型是Action(一个返回void的方法)或Func <T>(这是一个返回一个对象的方法) T)型.
在任何一种情况下,您都可以执行以下方法:
var result = my_dic["do"]();
Run Code Online (Sandbox Code Playgroud)