gpt4 book ai didi

c# - 为什么匿名委托(delegate)可以省略参数,而 lambda 不能?

转载 作者:IT王子 更新时间:2023-10-29 04:43:48 28 4
gpt4 key购买 nike

//ok
Action<int> CallbackWithParam1 = delegate { };

//error CS1593: Delegate 'System.Action<int>' does not take 0 arguments
Action<int> CallbackWithParam2 = () => { };

只是想知道为什么会出现这种差异。 :-/

最佳答案

Jared 当然是正确的。要添加更多详细信息:

  • 几乎没有人使用“跳过参数列表”语法。
  • 我们没有需要该功能的 lambda 方案。
  • 该功能使类型推断和重载解析变得复杂,并使两者更有可能失败。
  • 您希望该功能使用什么语法? Action<int> c = => {}; ???我不想做=>变成一元前缀运算符。

因此,一方面我们有专家列表:

  • Lambda 与一个几乎没有人知道或使用过的不必要的 C# 2.0 特性保持一致——坦率地说,我们希望我们一开始就没有这样做的特性

缺点:

  • 实现使本已复杂的类型推断和重载解析算法复杂化
  • 功能会为用户带来更多错误的可能性,而没有相应的表示能力。
  • 没有明显好的语法

如果给你一张利弊 list ,你会怎么做?我希望“实现功能”不是您的选择;这不是我们的。

关于c# - 为什么匿名委托(delegate)可以省略参数,而 lambda 不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9315101/

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