2012-02-07 64 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节的属性中指定。