Func<void> 作为输入参数

Bab*_*bad 4 c# parameters func

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

public static void DeleteSingleItemInDataGrid
    (DataGrid dataGrid, String IDcolumnName, Func<int> afterCompletionMethod_ToRun)
Run Code Online (Sandbox Code Playgroud)

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

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

ang*_*son 6

引用“返回”方法的委托在 .NET 行话中void称为 an Action,这也是委托类型的名称:

所以你的方法签名是这样的:

public static void DeleteSingleItemInDataGrid
    (DataGrid dataGrid, String IDcolumnName, Action afterCompletionMethod_ToRun)
Run Code Online (Sandbox Code Playgroud)

如果您需要将int参数传递给它,而不是 return int,那就是:

public static void DeleteSingleItemInDataGrid
    (DataGrid dataGrid, String IDcolumnName, Action<int> afterCompletionMethod_ToRun)
Run Code Online (Sandbox Code Playgroud)

这接受一个带有int参数的方法,该方法不返回任何内容(又名“返回” void)。

这也意味着您不能创建一个泛型方法,该方法既接受返回某些内容的方法,也接受不只使用一个方法返回某些内容的方法,但需要使用Action和 一个方法创建重载Func<T>