我們經常會看到一些c#**的方法名前有乙個方括號,裡面有一行文字,如:
1、序列化:
[serializable]
public void 方法名()
2、webservices方法:
[webmethod]
public void 方法名()
3、ajax(ajaxpro)方法:
[ajaxpro.ajaxmethod]
public void 方法名()
4、其他還有很多,如duwamish7裡的:
[browsable(false)]
public void 方法名()
請問這些方括號幹嘛用的呀?編譯器怎樣處理它們的呀?如何應用?
msdn解答:
attribute 類將預定義的系統資訊或使用者定義的自定義資訊與目標元素相關聯。目標元素可以是程式集、類、建構函式、委託、列舉、事件、字段、介面、方法、可移植可執行檔案模組、引數、屬性 (property)、返回值、結構或其他屬性 (attribute)。
屬性所提供的資訊也稱為元資料。元資料可由應用程式在執行時進行檢查以控制程式處理資料的方式,也可以由外部工具在執行前檢查以控制應用程式處理或維護自身的方式。例如,.net framework 預定義屬性型別並使用屬性型別控制執行時行為,某些程式語言使用屬性型別表示 .net framework 公共型別系統不直接支援的語言功能。
所有屬性型別都直接或間接地從 attribute 類派生。屬性可應用於任何目標元素;多個屬性可應用於同一目標元素;並且屬性可由從目標元素派生的元素繼承。使用 attributetargets 類可以指定屬性所應用到的目標元素。
通俗回答一:特性,用於程式集、類、方法、屬性、事件、字段、引數、返回值等的自描述
編譯器將特性像狗皮膏藥一樣貼在目標上,以便於其他程式通過反射查詢這些資訊
(有的特性是clr直接處理的,比如serializable、methodimpl等)
通俗回答二:就是用來描述該方法所具有的屬性,這些類都是通過atrrbuite類的派生類,
有些class也會被這樣的描述,這樣在反射的時候就可以區分別的類了。
C 方法名前的方括號
1 序列化 serializable public void 方法名 2 webservices方法 webmethod public void 方法名 3 ajax ajaxpro 方法 ajaxpro.ajaxmethod public void 方法名 4 其他還有很多,如duwamish7裡...
C 方法名前的方括號 方法標籤
1 序列化 serializable public void 方法名 2 webservices方法 webmethod public void 方法名 表示此方法是乙個web服務方法,客戶端可以通過web服務方式呼叫此方法。3 ajax ajaxpro 方法 ajaxpro.ajaxmethod ...
問題四 C 中inline是幹嘛用的
iinline 若乙個函式被指定為inline函式,則它將在程式中每個呼叫點上被內聯地展開。一般來說,內聯函式不會引入任何函式呼叫。所以可以提高執行效率。注意,函式home get height 和width 的定義是在類體內提供的。這些函式被稱為 在類定義中定義的內聯 inline 函式 這些函式...