您可以使用将string 用作键和方法(Action、Func 或自定义委托)作为值的字典,然后您只需要读取用户的输入并使用它作为键键来获取相应的动作。如果命令可以有像command param1这样的参数,那么使用string.Split将命令与参数分开,然后使用命令字符串作为键,在执行方法时传递另一个字符串作为参数(取决于类型参数的数据可能需要将命令的参数从字符串解析为其他内容)
代码如下所示:
使用函数:
注意:Func 至少需要一个参数和一个返回值。
void Main()
{
public Dictionary<string, Func<string, int>> commands =
new Dictionary<string, Func<string, int>>();
commands.Add("getdate", GetDate);
Console.WriteLine("Enter a command");
string input = Console.ReadLine(); //<-- Try typing "getdate"
commands[input].Invoke();
}
public int GetDate(string someParameter)
{
Console.WriteLine(DateTime.Today);
return 0;
}
使用动作:
注意:Action 至少需要一个参数。
void Main()
{
public Dictionary<string, Action<string>> commands = new Dictionary<string, Action>();
commands.Add("getdate", GetDate);
Console.WriteLine("Enter a command");
string input = Console.ReadLine(); //<-- Try typing "getdate"
commands[input].Invoke();
}
public void GetDate(string someParameter)
{
Console.WriteLine(DateTime.Today);
}
使用自定义委托:
public delegate double YourDelegate(string param);
void Main()
{
public Dictionary<string, YourDelegate> commands =
new Dictionary<string, YourDelegate>();
commands.Add("getdate", GetDate);
Console.WriteLine("Enter a command");
string input = Console.ReadLine(); //<-- Try typing "getdate"
commands[input].Invoke();
}
public double GetDate(string someParameter)
{
Console.WriteLine(DateTime.Today);
return 0.0;
}