c# - Func<void> 作为输入参数

标签 c# parameters func

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

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

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

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

最佳答案

引用“返回”的方法的委托(delegate) void被称为 Action在 .NET 术语中,这也是委托(delegate)类型的名称:

  • System.Action Delegate

  • 所以你的方法签名是这样的:
    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> .

    关于c# - Func<void> 作为输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23216074/

    相关文章:

    c# - 如何将数据绑定(bind)零 double 值转换为空字符串?

    java - 写数组作为参数Java

    ios - 在 .swift 文件中,为什么有些函数不在类括号内

    python - 使用 mysql 常量的 sqlalchemy 语法

    c# - 当仅知道所需对象的字符串名称时,C# 中的 JsonConvert.DeserializeObject

    c# - 用任何设计模式或更好的方法替换 if else 语句

    php - Laravel 5.2.* 重定向->返回->with 不起作用

    c# - system.security.cryptography.sha1 是否使用 OpenSSL 库的 SHA1 算法实现?

    java - 使用构造函数的参数作为全局变量