c# - Func<> 与 lambda 表达式

标签 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; }

还有我的问题:

如果从未分配值(或者可能是?),为什么允许使用此(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/

相关文章:

c# - 根据列值隐藏单个 JSON 值的任何简单方法?

c++ - 计算 lambda 中的参数数量

c# - linq 到 xml(c# 到 vb.net 转换)

java - 如何在 Java 的 Comparator 类中使用 lambda 表达式

java - 如何使用 java lambda 将 List 转换为 Map<T, <K, List<Person>>>?

lambda - [SonarLint] : make this anonymous inner class a lambda

c# - 使用嵌入式(托管)IronPython 为 C# 应用程序分发 DLR 运行时

c# - 我如何知道我在 Unity 上单击了哪个 GameObject?

c# - 无法从 Excel 列中读取字符串值

c# - 如何在 HubControl 中使用 AdDuplex?