为了账号安全,请及时绑定邮箱和手机立即绑定

C# .NET Take Action 作为方法的参数,该方法提供可以从 lambda

C# .NET Take Action 作为方法的参数,该方法提供可以从 lambda

C#
慕无忌1623718 2021-07-02 14:59:58
为了简化我刚刚写的内容,基本上意味着我想要这样的东西:var someClass = new someClass((func1, func2) =>{  if (cool)  {    func1(cool);  }  else  {    func2(cool);  }}这可能吗?我尝试了一个动作,但没有用。我真的很感激一些帮助:D
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

好的,我希望这是您正在寻找的:


  public class SomeClass

{

    public SomeClass(Action<Action<bool>, Action<bool>> func)

    {

    func(

            (i) =>{

                Func1(i);

            },


            (j) =>

            {

                Func2(j);

            });



    }


    public void Func1(bool cool)

    {


    }


    public void Func2(bool cool)

    {


    }


    public static void Main()

    {

        var someClass = new SomeClass((func1, func2) =>

          {

              var cool = true;

              if (cool)

              {

                  func1(cool);

              }

              else

              {

                  func2(cool);

              }

          });

    }

}


查看完整回答
反对 回复 2021-07-11
?
ITMISS

TA贡献1871条经验 获得超8个赞

 var f = new Func<int>(() => { return 1; });

 var result = f.Invoke();

这就是你所追求的吗?


输入和输出的语法是


var myfunction = new Func((x,y,z) => { return a;});


var a = x.Invoke(x,y,z);


来自编辑评论


 public class someclass

 {

      private Func A = ......

      private Func B = ......

      public void somemethod(type x)

      {

           if(x) this.A.Invoke();

           else this.B.Invoke();  

      }

 }


查看完整回答
反对 回复 2021-07-11
?
萧十郎

TA贡献1815条经验 获得超12个赞

您可以创建一个接受 Action 参数并根据某些条件返回其中一个参数的方法,以便可以在调用站点执行返回的 Action。


Action method (Action a, Action b)

{

    if (cool)

    {

        return a;

    }

    else

    {

        return b;

    }

}


查看完整回答
反对 回复 2021-07-11
  • 3 回答
  • 0 关注
  • 287 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信