2013-11-23 35 views
0

如果您有以下方法,那么调用Action参数的结果将返回传入的泛型T1的类型,那么如何编写它?我一直在遇到编译器错误。将对象类型赋值给操作返回?

private static void Test<T1>(T1 report, Action action) 
{ 
    report = action; 

} 
+0

甚至从编译时错误,为什么还要有一个参数预留,如果你再要立即忽略它? –

+0

只是我的一个不好的例子。 – user3010406

+1

这里有一个提示:小心你所要求的 - 答案可能会跟随你的不佳例子。 –

回答

5

动作返回类型是void即它不返回任何东西。

您需要使用Func<T1>,而不是这样的 -

private static void Test<T1>(T1 report, Func<T1> action) 
{ 
    report = action.Invoke(); 
} 

OR

private static void Test<T1>(T1 report, Func<T1> action) 
{ 
    report = action(); 
} 
+2

为什么不只是'report = action();'? –

+0

是的,它是一样的。谢谢。 –

+0

为什么action.Invoke()甚至存在?可怕的语法。 –