gpt4 book ai didi

c# - 将方法作为参数传递

转载 作者:太空狗 更新时间:2023-10-29 19:49:11 24 4
gpt4 key购买 nike

如何将方法作为参数传递?我一直在 Javascript 中这样做,需要使用匿名方法来传递参数。我如何在 C# 中执行此操作?

protected void MyMethod(){
RunMethod(ParamMethod("World"));
}

protected void RunMethod(ArgMethod){
MessageBox.Show(ArgMethod());
}

protected String ParamMethod(String sWho){
return "Hello " + sWho;
}

最佳答案

Delegates提供这种机制。对于您的示例,在 C# 3.0 中执行此操作的一种快速方法是使用 Func<TResult> 其中 TResultstring和 lambda。

您的代码将变为:

protected void MyMethod(){
RunMethod(() => ParamMethod("World"));
}

protected void RunMethod(Func<string> method){
MessageBox.Show(method());
}

protected String ParamMethod(String sWho){
return "Hello " + sWho;
}

但是,如果您使用的是 C#2.0,则可以改用匿名委托(delegate):

// Declare a delegate for the method we're passing.
delegate string MyDelegateType();

protected void MyMethod(){
RunMethod(delegate
{
return ParamMethod("World");
});
}

protected void RunMethod(MyDelegateType method){
MessageBox.Show(method());
}

protected String ParamMethod(String sWho){
return "Hello " + sWho;
}

关于c# - 将方法作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1228653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com