Func <void>作为输入参数</void>

时间:2014-04-22 09:51:17

标签: c# parameters func

我在c#中有一些带有一些参数的方法:

public static void DeleteSingleItemInDataGrid
    (DataGrid dataGrid, String IDcolumnName, Func<int> afterCompletionMethod_ToRun)

我想将第三个参数类型更改为Func< void >,但我不能。我怎么能这样做?

换句话说,我的问题是如何将方法(或函数 with void result )作为方法参数传递?

2 个答案:

答案 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代理。它将执行给定的任务并且不返回值。