为什么我的自动实现的属性在ASP.NET 2.0中工作?

我在ASP.NET Web应用程序的C#源文件中使用自动实现的属性语法:

public int IdUser { get; set; } ... this.IdUser = 1; 

该项目的Target框架.NET Framework 2.0 。 它编译并且似乎在仅安装了ASP.NET 2.0的IIS服务器上正常运行。 我使用Visual Studio 2010进行开发和编译。

我理解这个语法随.NET 3一起提供。
我在VS的某个地方错过了设置吗? 我是否可以在IIS / ASP.NET 2.0服务器上部署网站时遇到问题?

自动实现的属性在.NET 3.0中引入,但向后兼容2.0。 这就是为什么你可以在2.0框架上运行你的代码。 基本上,它只是一个语法糖,编译器实际上在幕后为你生成一个字段。

自动实现的属性适用于.NET 2.0,但您无法在Visual Studio 2005中编译代码。有一个3.0function列表及其与2.0的兼容性

http://csharpindepth.com/Articles/Chapter1/Versions.aspx

如果您使用的是Web应用程序或预编译的站点而不是Visual Studio“网站”,则只能在仅具有.NET 2.0的服务器上运行.NET 3.0 / 3.5function,因为后者是在服务器上编译的,前者由Visual Studio编译。

正如@Jakub所说,它是向后兼容的。 例如,您也可以使用隐式声明的变量( var i = 1; //i is int ),尽管它们也仅在C#3.0中引入!