我刚刚在Rx框架上看到brand-new video,一个特别的签名引起了我的注意:
Scheduler.schedule(this IScheduler, Action<Action>)
23:55,Bart de Smet说:
最早的版本是行动动作。
如果Action
是参数化类型,它又如何在尖括号内显示为无参数?这不一定是无限Action<Action<Action<...>>>
,这显然是不可能的吗?
答案 0 :(得分:4)
Action<T>
描述了一个采用类型为T的单个参数的委托。Action
描述了一个不带参数的委托。
请参阅http://msdn.microsoft.com/en-us/library/system.action.aspx
答案 1 :(得分:3)
Action
有几个重载。一个是非通用的,其他的是一个,两个,三个等类型的参数。假设它们有不同的名称,单参数版本被称为Action1
,零参数(非泛型)被称为Action0
,那么示例将是Action1<Action0>
。
答案 2 :(得分:1)
来自MSDN:
动作示例
Action showMethod = () => { Console.WriteLine("Line"); };
showMethod();
<强>动作与LT; T&GT;示例强>
Action<int> showMethod = (i) => { Console.WriteLine("Line {0}", i); };
showMethod(1);
答案 3 :(得分:0)
Action有一个带有签名的非泛型版本:
public delegate void Action();
所以它是一个采用void类型的Action的Action。看起来很有趣,但完全有效。
答案 4 :(得分:-1)
默认参数似乎就像这里的简单解决方案。