使用C#将方法传递为参数

我有几种方法都具有相同的签名(参数和返回值),但是不同的名称和方法的内部原理不同。 我想将要运行的方法的名称传递给另一个方法,该方法将调用传入的方法。

public int Method1(string)
{
    ... do something
    return myInt;
}

public int Method2(string)
{
    ... do something different
    return myInt;
}

public bool RunTheMethod([Method Name passed in here] myMethodName)
{
    ... do stuff
    int i = myMethodName("My String");
    ... do more stuff
    return true;
}

public bool Test()
{
    return RunTheMethod(Method1);
}

这段代码不起作用,但这就是我想要做的。 我不了解如何编写RunTheMethod代码,因为我需要定义参数。


#1楼

这是一个示例,可以帮助您更好地理解如何将函数作为参数传递。

假设您具有“ 父”页面,并且想要打开一个子弹出窗口。 在父页面中,应基于子弹出文本框填充一个文本框。

在这里您需要创建一个委托。

Parent.cs //代表声明公共代表void FillName(String FirstName);

现在创建一个将填充您的文本框的函数,并且该函数应映射委托

//parameters
public void Getname(String ThisName)
{
     txtname.Text=ThisName;
}

现在单击按钮,您需要打开一个子弹出窗口。

  private void button1_Click(object sender, RoutedEventArgs e)
  {
        ChildPopUp p = new ChildPopUp (Getname) //pass function name in its constructor

         p.Show();

    }

在ChildPopUp构造函数中,您需要创建父级//页面的“代理类型”参数

ChildPopUp.cs

    public  Parent.FillName obj;
    public PopUp(Parent.FillName objTMP)//parameter as deligate type
    {
        obj = objTMP;
        InitializeComponent();
    }



   private void OKButton_Click(object sender, RoutedEventArgs e)
    {


        obj(txtFirstName.Text); 
        // Getname() function will call automatically here
        this.DialogResult = true;
    }

#2楼

您需要使用一个委托 。 在这种情况下,所有方法都使用string参数并返回一个int最简单地由Func<string, int>委托1表示 。 因此,只需进行如下更改即可使您的代码正确无误:

public bool RunTheMethod(Func<string, int> myMethodName)
{
    // ... do stuff
    int i = myMethodName("My String");
    // ... do m
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值