FUNC<>与lambda表达式

时间:2015-07-20 21:18:31

标签: c# lambda

在学习 Func<> 语法时,我在一些示例中找到了以下部分代码:

  public static class Lambda
    {
        public static int MyFunc(Func<string, int> func)
        {
            //some logic
            return 0;
        }
    }

示例电话:

var getInt = Lambda.MyFunc((url) => { Console.WriteLine(url); return 0; }

和我的问题:

如果从未赋值(或者可能是?),为什么允许将带有this(url)的lambda表达式传递给func以上? 这样传递Func有什么意义呢?

修改: 澄清我的问题。我只是想知道这个示例调用 - 如果无法启动值,编译器不禁止像上面那样传递字符串(使用lambda(url)=&gt; {})。有没有像上面那样传递字符串有用的例子?

1 个答案:

答案 0 :(得分:10)

url是lambda表达式的参数的名称。这就像写一个这样的方法:

public static int Foo(string url)
{
    Console.WriteLine(url);
    return 0;
}

然后从中创建委托:

Func<string, int> func = Foo;

现在为了调用委托,你需要提供一个字符串 - 然后它变成参数的值,就像你正常调用方法一样:

int result = func("some url");