在学习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; }
还有我的问题:
如果从未分配值(或者可能是?),为什么允许使用此(url)将 func 作为 lambda 表达式传递到上面? 像这样传递 Func 有什么意义?
编辑: 澄清我的问题。我只是想知道这个示例调用 - 为什么如果无法启动值,编译器不会禁止像上面那样将字符串作为参数传递(使用 lambda (url) => {} )。是否有任何示例可用于像上面那样传递字符串?
最佳答案
url
是 lambda 表达式的参数 的名称。就像这样写一个方法:
public static int Foo(string url)
{
Console.WriteLine(url);
return 0;
}
然后从中创建一个委托(delegate):
Func<string, int> func = Foo;
现在为了调用委托(delegate),你需要给它提供一个字符串——然后它成为参数的值,就像你正常调用方法一样:
int result = func("some url");
关于c# - Func<> 与 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526529/