我正在尝试解决一些简单的学习任务,其中包括使用4种方法(设置,总和,打印,删除;前2个方法有2个参数-变量名和设置为变量的int值或求和为其当前值,后2个方法只有1个参数-变量名
我正在编写的方法采用string,例如“ set a 3”或“ print a”,并且应作为该字符串的解释器(执行适当的操作)。
显而易见的方法是使用switch
构造(按第一个单词切换),但是我已经读到,最好使用Dictionary
而不是switch
,所以我已经定义了>
Dictionary<string, Action<ActionArg>> methods
,其中ActionArg
被定义为具有2个继承类型的超类型:
abstract class ActionArg {}
class ActionArgVal : ActionArg { public string Val {get; set; } }
class ActionArgValVar : ActionArgVal { public int Var {get; set; } }
,并定义了4种方法,例如,
void Set(ActionArgValVar) { ... }
但是当我尝试编写methods = new Dictionary<string, Action<ActionArg>> { {"set", Set}, ... }
时,会发生一个错误,因为Action<ActionArgValVar>
的矛盾性导致无法将Action<ActionArg>
分配给Action
。 / p>
有没有办法使用Dictionary
来解决这个问题,或者像这样的任务最好通过简单的switch
构造来解决?