[英]Invoke Action by reference
我是C#的新手,看来我需要使用Dictionary<string, Action>
所以我写了以下代码:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var functions = new Dictionary<string, Action<string[]>>();
functions.Add("Foo", CountParameters);
functions.Add("Bar", SomeOtherMethodName);
Console.WriteLine("Hello World");
Action<string[]> action;
if (functions.TryGetValue("Foo", out action))
{
action();
// What shall I write here to invoke the action!?
}
else
{
// No function with that name
}
}
public static void CountParameters(string[] args)
{
Console.WriteLine("Fn 1");
}
public static void SomeOtherMethodName(string[] args)
{
Console.WriteLine("Fn 2");
}
}
我的问题分为两部分:
Action
。 Action
是带有void
返回值的Func
,但看起来输入args
是必须的,就我而言,我既没有input args
也没有output
所以Action
我需要什么,或者可能是其他东西? 如果您的所有方法都没有返回值,则可以使用Action<string[]>
。 如果他们甚至不需要参数,则可以简单地使用非通用的Action
-delegate并省略string[]
-parameter。
var functions = new Dictionary<string, Action>();
functions.Add("Foo", CountParameters);
...
关于调用:如果省略了(不必要的) string[]
-parameter,则在代码段中完成此操作的方式很好。 就像您已经在没有任何参数的情况下一样,只需调用从字典中获取的Action
-delegate: action();
除了附加方括号()
您还可以调用action.Invoke();
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.