我在c#中有一些带有一些参数的方法:
public static void DeleteSingleItemInDataGrid
(DataGrid dataGrid, String IDcolumnName, Func<int> afterCompletionMethod_ToRun)
我想将第三个参数类型更改为Func< void >
,但我不能。我怎么能这样做?
换句话说,我的问题是如何将方法(或函数 with void result )作为方法参数传递?
答案 0 :(得分:2)
引用“返回”void
的方法的委托在.NET术语中称为Action
,这也是委托类型的调用:
所以你的方法签名是这样的:
public static void DeleteSingleItemInDataGrid
(DataGrid dataGrid, String IDcolumnName, Action afterCompletionMethod_ToRun)
如果您需要将int
参数传递给它,而不是返回int
,那就是:
public static void DeleteSingleItemInDataGrid
(DataGrid dataGrid, String IDcolumnName, Action<int> afterCompletionMethod_ToRun)
这接受一个采用int
参数的方法,该方法不会返回任何内容(也就是“返回”void
)。
这也意味着你不能创建一个泛型方法,它接受返回某些方法的方法和只用一种方法不返回内容的方法,但需要使用Action
创建重载,使用Func<T>
创建重载
答案 1 :(得分:1)
您可以使用的Action代理。它将执行给定的任务并且不返回值。