Func委托传递了一个函数

时间:2015-04-29 08:07:56

标签: c#-4.0 delegates

我有以下代码:

private void Example(Func<string,int> myDelegate)
{
    int length = myDelegate(RECEIVEDSTRING).; //How to access received string??
}

当我执行方法时:示例(x =&gt;“Hello”.Length);如何在方法示例中访问字符串“Hello”?

感谢。

问候。

何。

1 个答案:

答案 0 :(得分:0)

这不是你应该如何处理这个委托。它需要一个输入参数,Example需要知道有关输入参数的一些细节才能执行委托。这里Example“作用”作为外部代码的接口,外部代码必须提供自己的实现。 如果Example需要执行委托,那么它需要提供REQUIRED字符串参数。恕我直言,Example需要在其签名中提供第二个参数,如下所示......

private void Example(string s, Func<string,int> myDelegate)
{
    int length = myDelegate(s);
}

然后外部代码可以提供自己的实现和参数......

Example("Hello", x => { return x.Length; });

您在C#中无法做到的事情,委托需要运行显式上下文,该上下文是字符串输入参数。

希望它有意义