2012-02-07 66 views
0

我很好奇,想知道爲什麼當我們在做的P/Invoke 的dllimport的呼叫的是「[」 並不僅僅是一個類或函數什麼呢支架代表P /調用函數[DllImport

例如:

[DllImport("something.dll",....)] 

而不是

DllImport("something.dll,....) 

甚至

DllImport.import(something.dll...) 

我不想重寫它,我的問題是「[」表示或意味着什麼?在這種情況下稱爲什麼?爲什麼使用?

+2

只是一個屬性,http://msdn.microsoft.com/en-us/library/z0w1kczw(v=vs.80).aspx – Joe 2012-02-07 19:30:51

回答

4

在這種情況下,它表示一個「屬性」; DllImportAttributeMSDN)。簡單地說:這是用於向代碼添加元數據的語言。

該語言允許您定義自己的屬性或來自庫的任何屬性。屬性可用於程序集,類型,方法,屬性,字段,事件,參數等 - 或者僅限於其中的一小部分。例如,DllImportAttribute限於方法。大多數情況下,在運行時使用反射進行檢查時纔有意義,但有些則由編譯器直接處理。

+0

哈,好笑,我忘了屬性存在。 :P謝謝你們。 +1兩個亞。 – 2012-02-07 19:38:10

3

DllImport不是一種方法。這是一個屬性。括號只是應用屬性的語法。

語法在C#規範的附錄B的B.2.13節的屬性中指定。