我刚刚在Rx框架上看到了一个全新的视频,一个特别的签名引起了我的注意:
Scheduler.schedule(this IScheduler, Action<Action>)
23:55,巴特·德·斯梅特说:
最早的版本是行动的行动。
如果Action
是参数化类型,它如何再次在尖括号内显示为未参数化?难道它不是必须无限Action<Action<Action<...>>>
,这显然是不可能的吗?
Action<T>
描述采用 T 类型的单个参数的委托。 Action
描述不带参数的委托。
见 http://msdn.microsoft.com/en-us/library/system.action.aspx
Action
有几个重载。一个是非泛型的,其他的采用一个、两个、三个等类型参数。假设它们有不同的名称,单参数版本称为Action1
,零参数(非泛型(称为Action0
,那么示例将是Action1<Action0>
。
来自 MSDN:
- 行动
- 动作
操作示例
Action showMethod = () => { Console.WriteLine("Line"); };
showMethod();
操作
Action<int> showMethod = (i) => { Console.WriteLine("Line {0}", i); };
showMethod(1);
Action 具有具有签名的非通用版本:
public delegate void Action();
因此,这是一个采取 void 类型的操作的操作。看起来很有趣,但完全有效。
默认参数似乎是这里的简单解决方案。