1、特性的基本概述
Attribute(特性),
公共語言運行時容許添加相似關鍵字的描述聲明,叫作attributes, 它對程序中的元素進行標註,如類型、字段、方法和屬性等。Attributes和Microsoft .NET Framework文件的元數據保存在一塊兒,能夠用來向運行時描述你的代碼,或者在程序運行的時候影響應用程序的行爲。
2、特性的應用
(1)在.NET中,Attribute被用來處理多種問題,好比序列化、程序的安全特徵、防止即時編譯器對程序代碼進行優化從而代碼容易調試等等。
定製的特性本質上是爲一個類的元素上去添加附加信息,並在運行其經過反射獲得該附加信息(在使用數據實體對象時常常用到)
(2)Attribute做爲編譯器的指令時的應用:
Conditional:起條件編譯的做用,只有知足條件,才容許編譯器對它的代碼進行編譯。通常在程序調試的時候使用。
DllImport:用來標記非.NET的函數,代表該方法在一個外部的DLL中定義。
Obsolete:這個屬性用來標記當前的方法已經被廢棄,再也不使用了。
例:若是在一個程序元素前面聲明一個Attribute,那麼就表示這個Attribute被施加到該元素上,下面的代碼:
[DllImport]施加到MessageBox函數上。
[Conditional]施加到DisplayRuntimeMessage方法。
[Obsolete]施加到DisplayDebugMessage方法上
3、補充說明
Attribute就是一個類,因此DllImport也是一個類,Attribute類是在編譯的時候被實例化的,而不是像一般的類那樣在運行時候才實例化。 Attribute實例化的時候根據該Attribute類的設計能夠帶參數,也能夠不帶參數: DllImport就帶有"User32.dll"的參數。 Conditional對知足參數的定義條件的代碼進行編譯,若是沒有定義DEBUG,那麼該方法將不被編譯。 Obsolete代表了DispalyDebugMessage方法已通過時了,它有一個更好的方法來代替它,當咱們的程序調用一個聲明瞭Obsolete的方法時,那麼編譯器會給出信息。