1)Action委托的真正定义是什么?一些定义描述它是多态条件映射,有人说它*应用决策表*.
(你可能会问你通过了解定义会得到什么,如果我知道它我能理解它的真正目的).
2)感谢Binary Worrier,Andrew Hare的stackoverflow给出了很好的例子.
当我宣布
string[] words = "This is as easy as it looks".Split(' '); `Array.ForEach(words,p => Console.WriteLine(p));`
我可以理解它究竟是做什么的.但是当我宣布时,C#如何解释我
宣布
Dictionary<SomeEnum,Action<User>> methodList = new Dictionary<SomeEnum,Action<User>>() methodList.Add(SomeEnum.One,DoSomething); methodList.Add(SomeEnum.Two,DoSomethingElse);
它是否在字典中存储了Actions的集合?.不幸的是,由于示例不完整,我没有得到它.
3)Action,Function,Predicate delagets之间的功能区别是什么?
解决方法
这只是另一位代表.动作及LT; T>声明如下:
void Action<T>(T item)
它只是“对单个项目起作用的东西”.存在具有更多类型参数和正常参数的泛型重载.本身,Action< T>不是一个应用的决策表或类似的东西 – 它只是一个可以对项目做“某事”的代表.
字典示例只是一个字典,其中枚举值为键,操作为值 – 因此您可以根据枚举值查找要执行的操作,然后传入用户引用以对其进行操作.
至于Func vs Action vs Predicate:Func就像Action,但返回一个值.谓词类似,但总是返回bool,并且没有泛型重载的范围,只是Predicate< T>确定项是否“匹配”谓词.