我在下面的代码中读到了Action<T> and returns Action<T>
private static Action<HttpContext> WrapCallback(Action<HttpContextBase> callback)
{
if (callback != null)
{
return delegate(HttpContext context)
{
callback(new HttpContextWrapper(context));
}
;
}
return null;
}
What is the use of returning Action<T>
而不是像对象,字符串等知道的类型。我不明白它如何在程序中使用。任何场景/示例请
答案 0 :(得分:2)
对于你的例子,你可以这样做
回电功能
public void ActFunction(int a)
{
}
调用代码
Action<int> act = new Action<int>(aActFunction);
WrapCallback(act);
相反,Action是您要传递给WrapCallback的函数
是功能
public class ActionDemo
{
public void ActFunction(int a)
{
}
public void ActFunction1()
{
}
static void Main()
{
ActionDemo ad = new ActionDemo();
Action act1 = new Action(ad.ActFunction1);
act1();
Action<int> act = new Action<int>(ad.ActFunction);
act();
}
}
有关此内容的详细信息,请参阅此博文:http://pranayamr.blogspot.no/2012/08/delegate-and-action-and-func-and-lamda.html
答案 1 :(得分:2)
基本上,它等同于手动创建lambda;
Action<HttpContext> callback1 = WrapCallback(DoSomething);
Action<HttpContext> callback2 = x => DoSomething(new HttpContextWrapper(x));
换句话说,它将作为参数给出的函数包装在另一个函数中并返回新函数。
新函数 - 在调用时 - 将HttpContext参数包装在HttpContextWrapper中并用它调用原始函数。