在学习Func <>语法时,我在一些示例中找到了以下部分代码:
public static class Lambda
{
public static int MyFunc(Func<string, int> func)
{
//some logic
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
样品来电:
var getInt = Lambda.MyFunc((url) => { Console.WriteLine(url); return 0; }
Run Code Online (Sandbox Code Playgroud)
而我的问题:
如果从未赋值(或者可能是?),为什么允许将带有this(url)的lambda表达式传递给func以上?像这样传递Func有什么意义?
编辑: 澄清我的问题.我只是想知道这个示例调用 - 如果无法启动值,编译器不禁止像上面那样传递字符串(使用lambda(url)=> {}).有没有任何例子可以用于传递像上面的字符串?
Jon*_*eet 10
url是lambda表达式的参数名称.这就像写一个这样的方法:
public static int Foo(string url)
{
Console.WriteLine(url);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后从中创建委托:
Func<string, int> func = Foo;
Run Code Online (Sandbox Code Playgroud)
现在,为了调用委托,您需要提供一个字符串 - 然后成为参数的值,就像您正常调用该方法一样:
int result = func("some url");
Run Code Online (Sandbox Code Playgroud)