2012-02-22 90 views
3

我用我的ASP.NET Web應用程序的C#源文件的自動實現屬性語法:爲什麼我的自動實現的屬性在ASP.NET 2.0中工作?

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

該項目的目標框架的.NET Framework 2.0。它編譯並似乎只在安裝了ASP.NET 2.0的IIS服務器上正常運行。我使用Visual Studio 2010進行開發和編譯。

我明白這個語法附帶了.NET 3.
我錯過VS中的某個設置嗎?我可以期望在IIS/ASP.NET 2.0服務器上部署網站時出現問題嗎?

+1

在自動實現的情況下,支持字段由編譯器生成並推入,因此非常類似於您在不使用構造函數的情況下編寫的類,因此會推送默認的類。 – V4Vendetta 2012-02-22 11:38:52

回答

6

自動實現的屬性在.NET 3.0中引入,但向後兼容2.0。這就是爲什麼你可以在2.0框架上運行你的代碼。基本上,它只是一個語法糖,編譯器實際上爲你在後臺生成一個字段。

1

正如@Jakub所說,它是向後兼容的。例如,您也可以使用隱式聲明的變量(var i = 1; //i is int),儘管它們也僅在C#3.0中引入!

1

兼容性如果您使用的是Web應用程序或預編譯的網站,而不是Visual Studio的「網站」,則只能在只有.NET 2.0的服務器上運行.NET 3.0/3.5功能,因爲後者在服務器上編譯,前者是由Visual Studio編譯的。

相關問題