gpt4 book ai didi

c# - 对于匿名方法,是否存在委托(delegate)语法优于 lambda 表达式的情况?

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

随着 lambda 表达式(内联代码)等新功能的出现,是否意味着我们不必再使用委托(delegate)或匿名方法?在我看到的几乎所有示例中,它都是为了使用新语法进行重写。

我们仍然必须使用委托(delegate)和 lambda 表达式的任何地方都行不通吗?

最佳答案

是的,有些地方直接使用匿名委托(delegate)和 lambda 表达式是行不通的。

如果方法采用无类型委托(delegate),则编译器不知道将匿名委托(delegate)/lambda 表达式解析为什么,您将收到编译器错误。

public static void Invoke(Delegate d)
{
d.DynamicInvoke();
}

static void Main(string[] args)
{
// fails
Invoke(() => Console.WriteLine("Test"));

// works
Invoke(new Action(() => Console.WriteLine("Test")));

Console.ReadKey();
}

失败的代码行将出现编译器错误“无法将 lambda 表达式转换为类型‘System.Delegate’,因为它不是委托(delegate)类型”。

关于c# - 对于匿名方法,是否存在委托(delegate)语法优于 lambda 表达式的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/106324/

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