【问题标题】:Why are anonymous methods not supported in .Net 1.1?为什么 .Net 1.1 不支持匿名方法?
【发布时间】:2012-08-11 00:14:37
【问题描述】:

我最近在新工作中学到了很多关于 IL 的知识。我有一个问题,虽然我找不到答案。

我看到的所有文档都表明 .Net 1.1 不支持匿名方法(用于委托)。然而,在 IL 中,匿名方法似乎是通过使用具有“不可能”名称的常规方法来实现的。

那么匿名方法在 .Net 1.1 上不受支持怎么办?我有什么遗漏吗?

【问题讨论】:

  • 您能指出您正在谈论的文档吗?
  • 我知道没有愚蠢的问题,但这就像问为什么你不能用汽油来驱动你的马和车,因为你更现代的交通工具可以。
  • @Evildonald 不,更像是如果有一种新型汽油问世,由于某种原因被任意记录在旧车上不起作用,但它完全一样。
  • @Earlz 这不是在谈论 .Net 2.0,而是在谈论 C# 2.0。毫无疑问,匿名方法是 C# 2.0 中的新方法。 .Net 和 C# 的版本密切相关,但仍然不同。

标签: .net delegates compatibility il


【解决方案1】:

那么匿名方法在 .Net 1.1 上不受支持怎么办?我有什么遗漏吗?

针对 .Net 1.1 的编译器不支持这一点,因此无法在 1.1 版本的 Framework 中创建。

当然,自定义语言或编译器可以创建匿名方法的版本 - 但当时什么都没有。

【讨论】:

  • 啊...这就是我的想法,但我认为他们为什么不倒退并为此类事情添加对 .Net 1.1 目标的支持对我来说没有任何意义
  • @Earlz .NET 2 是一个如此巨大的变化(使用泛型等),我认为在 1.1 发布后并没有太大的意愿去做任何事情......
  • 看起来匿名方法对 .Net 2.0 来说并不是什么新鲜事,而是对 C# 编译器来说是新的(与 .Net 2.0 相关的任何版本)......他们以前已经倒退了很多。您可以使用面向 .Net 2.0 的 C# 4.0 编译器进行编译。当然,只支持语言特性,不支持框架特性……我的问题是为什么匿名方法被归类为框架特性,而实际上是语言特性
  • @Earlz 它们不是框架功能 - 它们是语言功能。您引用的文档只是不清楚。
【解决方案2】:

我认为文档具有误导性。应该说明的是,早期版本的托管语言(VB、C#、C++/CLI)不支持匿名方法。

正如您所发现的,IL 中没有匿名方法的概念。让它们匿名(通过使用混乱的名称隐藏它们)取决于语言。

【讨论】:

    猜你喜欢
    • 2012-01-27
    • 1970-01-01
    • 2019-05-20
    • 2012-03-11
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2011-03-21
    相关资源
    最近更新 更多