Значение текста в квадратных скобках - PullRequest
13 голосов
/ 21 апреля 2009

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

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

Ответы [ 5 ]

17 голосов
/ 21 апреля 2009

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

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

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

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

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

3 голосов
/ 21 апреля 2009

Это атрибуты .

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

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

1 голос
/ 21 апреля 2009

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

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

См. Следующую статью: текст ссылки

1 голос
/ 21 апреля 2009

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

1 голос
/ 21 апреля 2009

См. Информацию об атрибутах в .Net:

http://msdn.microsoft.com/en-us/library/5x6cd29c.aspx

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