2009-04-20 1 views
2

Какие преимущества имеют атрибуты при использовании комментариев (или комментариев xml на уровне подписи)? Я помню, как я видел нить в разделе C# этого сайта, но я не могу его найти сейчас.Атрибуты против комментариев

Кроме того, можно ли применить атрибут к определенному параметру в методе (это был вопрос интервью, который я где-то читал)?

ответ

4

Комментарии предназначены только для разработчиков, чтобы они могли видеть, какие классы и методы существуют.

Атрибуты полезны для решения, которое вы разрабатываете, как вы можете использовать, чтобы описать, как работать с классом, к которому вы добавляете атрибуты.

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

Вот ссылка об атрибутах:

http://en.csharp-online.net/Attributes

Надеется, что это помогает

1

Attributes можно получить во время выполнения, что не относится к комментариям.

Фактически, атрибуты и комментарии - это две совершенно разные вещи и служат двум совершенно различным целям.

Комментарии направлены на обеспечение подсказки для программиста чтения коды, в то время как атрибуты направлены на обеспечение подсказки компилятора/выполнение «чтение» код ..

2

Я не понимаю, как атрибуты и комментарии связаны; атрибуты добавляют определенную функциональность классу/объекту, тогда как комментарии предназначены для потоковой документации.

Возможно облегчить добавление метаданных с использованием атрибутов (например, использовать атрибут Author (string name) для обозначения автора класса и т. Д.) И, таким образом, облегчить извлечение этих метаданных, но в противном случае я не вижу сравнения.

+0

Иногда атрибуты используются для добавления информации к объекту, но без дополнительных функций. Как пример автора (имя строки), который вы даете. Это единственное сравнение, о котором я думаю. – dotnetdev

1

Обычно атрибуты используются, когда вы планируете обрабатывать исходный код программно (как правило, с помощью .NET-отражения.) Чтобы сделать то же самое с комментариями XML, вам нужно будет иметь специальное соглашение для формата ваших комментариев и синтаксического анализа исходный файл самостоятельно, и это соглашение не может быть легко проверено во время компиляции, например, атрибуты.

1

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

1

Вообще говоря, вы не можете сравнивать атрибуты комментариев XML. Последнее, в конечном счете, не имеет абсолютно никакого отношения к коду, тогда как атрибуты остаются в скомпилированной сборке в разделе метаданных.

Что касается второй части вашего вопроса, то это возможно, в самом деле:

[return:MySecondAttribute] void Foo([MyAttribute] int bar) 

Здесь MySecondAttribute применяется к возвращаемому значению, и MyAttribute применяется к параметру bar. Замените return: на assembly:, чтобы применить атрибут на уровне сборки.

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