2012-08-11 65 views
0

我最近刚学过很多关于IL的新工作。我有一个问题,虽然我不能找到答案。为什么.Net 1.1中不支持匿名方法?

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

那么匿名方法怎么样使得它们在.NET 1.1上不受支持?有什么我失踪?

+0

你能指出你正在谈论的文档吗? – svick 2012-08-11 00:39:12

+0

我知道不存在一个愚蠢的问题,但这就像问你为什么不能在汽油上运行你的马车,因为你的现代化交通工具确实如此。 – Evildonald 2012-08-11 01:16:42

+0

@svick http://msdn.microsoft.com/en-us/magazine/cc163682.aspx#S5或只是去谷歌和键入'匿名方法.net 2.0' ....和C#编译器不会让您在定位.Net 1.1时创建匿名方法。 – Earlz 2012-08-11 01:22:11

回答

4

那么匿名方法怎么样使得它们不支持.NET 1.1?有什么我失踪?

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

自定义语言或编译器当然可以创建匿名方法的一个版本 - 但当时没有做任何事情。

+0

嗯......这就是我的想法,但它对我来说没有任何意义,为什么他们不会倒退,并增加对.Net 1.1目标的支持 – Earlz 2012-08-11 00:24:02

+1

@Earlz .NET 2就是这样一个巨大的变化(与泛型等),我不认为有太多的愿望去做任何事情后,它出来... ... – 2012-08-11 00:25:14

+0

它似乎就像匿名方法并不是什么新的.NET 2.0,但相当新的C#编译器(与.Net 2.0相关的任何版本)..他们之前已经倒退了很多。您可以使用C#4.0编译器编译东西,它以.Net 2.0为目标。当然,只支持语言功能,而不支持框架功能......我的问题是为什么匿名方法被分类为框架功能,但真的是语言功能 – Earlz 2012-08-11 01:27:10

2

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

正如你所发现的,在IL中没有匿名方法的概念;取决于语言使他们匿名(通过将他们隐藏起来)。