自從微軟March CTP版本的Visual Studio和.Net Framework “Orcas”發布以來,許多博客作家都在考察和評論這一版本在run-time Macros和code metrics等方面的新特性。
近日,微軟ASP.Net 和AJax開發部的頭腦Scott GuthrIE又在其博客中發布了C# 3.0的一些新特性。其文中重點提及的C#3.0的新特性如下:
Automatic propertIEs——自動屬性
Orcas 版的C#可以自動建立私有域和默認的get/set函數,而不必由用戶手工聲明私有域和手工建立get/set函數。如:我們使用以前的C#語言編程時,需要手工書寫如下代碼段:
以下是引用片段:
public class Person ...{
private string _firstName;
private string _lastName;
private int _age;
public string FirstName ...{
get ...{
return _firstName;
}set ...{
_firstName = value;
}
}
public string LastName ...{
get ...{
return _lastName;
}
set ...{
_lastName = value;
}
}
public int Age ...{
get ...{
return _age;
}
set ...{
_age = value;
}
}
}
使用Orcas 版的C#後我們可以利用其自動屬性功能重寫如上代碼如下:
以下是引用片段:
public class Person ...{
public string FirstName ...{
get; set;
}
public string LastName ...{
get; set;
}
public int Age ...{
get; set;
}
}
或者為了更加簡潔,我們可以減少空白區域,將代碼緊湊如下:
以下是引用片段:
public class Person ...{
public string FirstName ...{
get; set;
}
public string LastName ...{
get; set;
}
public int Age ...{
get; set;
}
}
當C# “Orcas”編譯器遇到一個如上所示的空白的get/set property implementation時,它將會在你的類中自動產生一個私有域,同時實現一個公共的getter and setter property implementation。這樣做的好處是,從type-contract的角度看,類好像使用了上述第一段代碼中的執行(implementation)。這就意味著,與公共領域不同,我們將來可以在property setter implementation中添加驗證邏輯,而不需要改變任何與類相關的外部組件。