首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# -向委托传递参数并提取它

C# -向委托传递参数并提取它
EN

Stack Overflow用户
提问于 2013-05-12 17:09:03
回答 5查看 158关注 0票数 2

我有以下委派情况:

代码语言:javascript
运行
复制
string myVal = "test";
Step(x => MethodToInvoke(myVal));


private T Step<T>(Func<string, T> method){
    str = ;//Where do I get the string myVal from???
    return method.Invoke(str);
}

private string MethodToInvoke(string str){
   return str + "_invoked"
}

我如何进入方法Step已经发送的参数?(string myVal = "test")我想在method.Invoke之前做一些逻辑,在逻辑之后做method.Invoke。

有可能吗?我是不是漏掉了什么?谢谢

EN

Stack Overflow用户

发布于 2013-05-12 17:17:34

这些字符串尚未发送到Step方法。它只被发送到Step方法的λ表达式使用,而λ表达式忽略了输入变量,所以如果您在调用字符串之前对它做了任何操作,它也不会有任何帮助,它仍然会使用原始字符串并忽略您发送给它的内容。

首先让lambda表达式使用输入参数而不是变量,然后将字符串发送到Step方法:

代码语言:javascript
运行
复制
Step(x => MethodToInvoke(x), "test");

private T Step<T>(Func<string, T> method, string value){
  str = value; // do whatever you like with the string
  return method(str);
}

嗯,因为MethodToInvoke方法已经使用了输入参数,所以你实际上根本不需要lambda表达式,你只需要对这个方法进行委托就可以了:

代码语言:javascript
运行
复制
Step(MethodToInvoke, "test");
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16505805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档