【问题标题】:Func type with a parameter and void return带参数和 void 返回的 Func 类型
【发布时间】:2020-01-25 12:44:05
【问题描述】:

我想知道为什么这不起作用?编译器说 void 不能与 Func 类型一起使用。 在那种情况下,我有什么选择

  Func<int,void> func1 =  (x) => { Console.WriteLine("Hello World"); };

【问题讨论】:

    标签: c# lambda function-pointers


    【解决方案1】:

    Func&lt;T, TResult&gt;委托有一个参数,返回一个TResult指定类型的值,不能使用void,因为它指定方法不返回任何值,不能用作类型参数。

    您可以在示例中使用Action&lt;T&gt; 委托,它只有一个参数并且不返回值

    Action<int> action = (x) => { Console.WriteLine("Hello World"); };
    

    由于没有使用x参数,你可以使用无参数的Action委托

    Action action = delegate { Console.WriteLine("Hello World"); };
    

    【讨论】:

      【解决方案2】:

      您正在寻找Action&lt;int&gt;

      【讨论】:

      • @sɐunıɔןɐqɐp 哦,它没有详细阐述,但是:很确定它回答了这个问题,虽然它可能很简洁
      • 好吧,S.O.规则很明确……如果我做例外,S.O. 的无脑机器人审计。在某个时候得到我;-)
      【解决方案3】:

      你可以声明一个Action,但是可以通过返回一个空对象来解决这个问题。

      Func<int,object> func1 =  (x) => { Console.WriteLine("Hello World"); return null;};
      func1(2);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多