如何在C#中存储函数指针

y2k*_*y2k 19 .net c# pointers function

假设我想在a中存储一组函数指针List<(*func)>,然后稍后调用它们,甚至可能使用参数...就像我存储在a中一样,我Dict<(*func), object[] params>可以用参数调用func吗?我该怎么做?

Joh*_*ers 34

.NET使用委托而不是函数指针.您可以将委托实例与任何其他类型的对象一起存储在字典或其他方面.

请参阅MSDN上的C#编程指南中的代理.


Dav*_*sky 22

你绝对可以拥有一本功能词典:

Dictionary<string, Action<T>> actionList = new Dictionary<string, Action<T>>();
Dictionary<string, Func<string>> functionList = new Dictionary<string, Func<string>>();

actionList.Add("firstFunction", ()=>{/*do something;*/});
functionList.Add("firstFunction", ()=>{return "it's a string!";});
Run Code Online (Sandbox Code Playgroud)

然后,您可以调用这样的方法:

string s = functionList["firstFunction"].Invoke();
Run Code Online (Sandbox Code Playgroud)

  • 你也可以直接调用它们:`functionList ["firstFunction"]()` (11认同)

Ben*_*igt 8

查看委托上的C#文档,它是函数指针的C#等价物(它可以是普通函数指针,也可以是curry一次以提供this参数).有很多信息对您有用.

  • 代表们的哪些C#文档?链接会有所帮助. (2认同)