gpt4 book ai didi

c# - 我可以使用 lambda 语法忽略委托(delegate)参数吗?

转载 作者:IT王子 更新时间:2023-10-29 04:19:09 26 4
gpt4 key购买 nike

我很好奇为什么 C# 允许我在某些情况下忽略委托(delegate)参数,而在其他情况下不允许。

例如,这是允许的:

Action<int> action = delegate { Console.WriteLine("delegate"); };

但这不是:

Action<int> action = () => Console.WriteLine("lambda");

有没有办法使用 lambda 初始化委托(delegate)并忽略参数?我知道我可以向 lambda 添加一个参数并修复前一行,但这更多是一个与编译器有关的学术问题,以及它为什么或如何工作。

最佳答案

我相信您的第一个示例实际上创建了一个匿名函数,该函数能够采用许多不同的签名,其主体是单个语句 Console.WriteLine...。因为它可以匹配不同的签名,所以不会出现问题。在第二个示例中,lambda 语法本身定义了一个函数,该函数不采用具有相同主体的参数。显然后者与定义的 Action 不一致所以你得到错误。

C# Anonymous Method Reference

There is one case in which an anonymous method provides functionality not found in lambda expressions. Anonymous methods enable you to omit the parameter list, and this means that an anonymous method can be converted to delegates with a variety of signatures. This is not possible with lambda expressions.

关于c# - 我可以使用 lambda 语法忽略委托(delegate)参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505850/

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