что представляет собой скобка в P / invoke [dllimport - PullRequest
0 голосов
/ 07 февраля 2012

Мне любопытно узнать, почему, когда мы выполняем P / invoke, вызов dllimport находится в «[», а не просто в классе или функции

, например:

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

вместо

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

или даже

DllImport.import(something.dll...)

Я не хочу переписывать это, мои вопросы - что означает "[" или что означает?как это называется в данном случае?Почему это используется?

Ответы [ 2 ]

4 голосов
/ 07 февраля 2012

В этом контексте это означает «атрибут»;DllImportAttribute ( MSDN ).Проще говоря: это уже синтаксис на языке для добавления метаданных в код.

Язык позволяет вам определять свои собственные атрибуты или любые из библиотек.Атрибуты могут использоваться в сборках, типах, методах, свойствах, полях, событиях, параметрах и т. Д. - или ограничены небольшим подмножеством этого.DllImportAttribute ограничивается, например, методами.Большинство из них имеют смысл только при проверке с отражением во время выполнения, но некоторые обрабатываются непосредственно компилятором.

3 голосов
/ 07 февраля 2012

DllImport не является методом.Это атрибут.Скобки - это всего лишь синтаксис для применения атрибутов.

Синтаксис указан в приложении B спецификации C #, раздел B.2.13, Атрибуты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...