15.特性
C#和Java的編譯代碼裡都包括類似於字段訪問級別的信息。C#擴展了這個能力,對類中的任何元素,比如類、方法、字段甚至是獨立參數,你都可以編譯自定義的信息,並可以於運行時獲取這些信息。這兒有一個非常簡單的使用特性的類的例子:
[AuthorAttribute ("Ben Albahari")]
class A
{
[Localizable(true)]
public String Text file://【譯注:應為public string Text或public System.String Text,如果前面沒有using System的話】
{
get {return text;}
//...
}
}
Java使用一對/** */和@標簽注釋以包含類和方法的附加信息,但這些信息(除了@deprecated【譯注:Java1.1版本及以後】)並未build到字節碼中。C#使用預定義的特性Obsolete特性,編譯器可以警告你,排除廢代碼(就象@deprecated),並用Conditional特性使得可以條件編譯。微軟新的XML庫使用特性來表達字段如何序列化到XML中,這就意味著你可以很容易地把一個類序列化到XML中,並可以再次重建它。另外一個對特性的恰當的應用是創建真正有威力的類浏覽工具。C#語言規范詳盡第解釋了怎樣創建和使用特性。