Скажем, я хочу сохранить группу указателей функции в a List<(*func)>
, и затем позже назовите их, возможно, даже с параметрами... Как то, если я сохранил в a Dict<(*func), object[] params>
я мог назвать func с параметрами? Как я сделал бы это?
.NET использует делегаты вместо указателей функций. Вы можете хранить экземпляр делегата, как и любой другой объект, в словаре или иным образом.
См. Делегаты из руководства по программированию на C# на MSDN.
Есть несколько способов сделать это. Вы могли бы сделать это, как предлагали другие, с помощью делегатов. Но для того, чтобы словарь заработал, им всем понадобится одна и та же подпись.
var funcs = new Dictionary<Action<object[]>, object[]>();
Или, если у них разные сигнатуры, вы можете использовать реальный отраженный метод, как показано ниже
var funcs = new Dictionary<MethodInfo, object[]>();
У вас может быть словарь функций:
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!";});
Затем вы можете вызвать методы вроде этого:
string s = functionList["firstFunction"].Invoke();
Используйте эфир как делегат или событие (в зависимости от использования).
Посмотрите документацию C# по делегатам, которые являются эквивалентом указателя функции в C# (он может быть обычным указателем функции или быть один раз прокликанным, чтобы предоставить параметр this). Там есть много информации, которая будет вам полезна.