2009-04-21 4 views
12

Я видел много программ на C#, которые используют [], например [STAThread], а затем код следует. Другой классический пример: [DLLImport].Смысл текста между квадратными скобками

Я знаю, что такое STAThread, но мой вопрос в том, каково значение квадратных скобок, в основном, что они говорят компилятору?

ответ

16

Это атрибут. Атрибуты - это форма метаданных, которые можно присоединить к различным элементам кода: классы, методы, сборки и т. Д.

Некоторые атрибуты имеют особое значение для компилятора C#, например, [Serializable], вероятно, сообщает компилятору испустить некоторый код, который может сериализуйте экземпляр класса (я говорю «возможно», так как я не знаю, как работают внутренние компиляторы C#).

Вы также можете создать свои собственные атрибуты (наследуя System.Attribute). Используя отражение, вы можете в процессе выполнения извлечь информацию из атрибутов.

Простым примером может быть создание атрибута для указания того, какое поле ввода использовать в форме HTML при отображении свойства объекта.

Некоторые ссылки:

2

Это attributes.

Атрибуты имеют много применений - [Obsolete] отмечает метод как устаревший, и компилятор предупредит вас. Другие, такие как [DebuggerNonUserCode], ничего не сообщают компилятору и могут ли отладчик знать, что код в отмеченном методе автогенерируется.

Вы также можете создавать свои собственные атрибуты и использовать их для обозначения любых метаданных. Например, ваш объект Клиента может иметь атрибут [MarketingInformation("Customer is rich! Milk him good!")].

1

Они являются атрибутами, которые добавляют метаданные к тому, что они декорированию.

1

Тезисы называются атрибутами кода. Атрибуты используются для обозначения кода со свойствами, которые обычно предназначены для указания поведения во время выполнения. Они обычно используются для обозначения методов, свойств и параметров. Во время выполнения вашего кода для проверки кода будет выполнено что-то под названием «отражение». Reflection сообщает компилятору наблюдать и соблюдать любые инструкции, указанные вами в качестве атрибутов маркировки кодера для кода.

Хорошим примером может служить атрибут [Serializable]. Этот атрибут, помеченный над классом, указывает компилятору, что он может быть сериализован для целей сохранения экземпляра класса или для передачи через среду, например веб-службы SOAP.

См. Следующую статью: link text

Смежные вопросы