gpt4 book ai didi

c# - 为什么lambdas可以将函数调用转化为Actions?

转载 作者:可可西里 更新时间:2023-11-01 08:02:58 24 4
gpt4 key购买 nike

在这段代码中:

List<String> names = new List<String>();
names.Add("Bruce");
names.Add("Tom");
names.Add("Tim");
names.Add("Richard");

names.ForEach(x => Print(x));

private static string Print(string s)
{
Console.WriteLine(s);
return s;
}

Print 肯定不是 Action,因为它返回 string;但是 x=> Print(x) 是,为什么?

最佳答案

lambda 表达式的类型 x => Print(x)是根据其上下文确定的。因为编译器知道 lambda 分配给了 Action<string> ,编译器忽略 Print(s) 的返回类型方法就好像它是一个语句表达式

这是一个有效的转换:

Action<string> myAction = y => Print(y);

换句话说,两者

Print("something");

int x = Print("something");

Print 的正确用法方法;它们可以以相同的方式在 lambda 中使用。

关于c# - 为什么lambdas可以将函数调用转化为Actions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12869426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com