Описание тега annotations
В программировании аннотации используются для добавления информации к элементу кода, который не может быть выражен системой типов.
Аннотации Java
До java1.4 аннотации использовались только внутри комментариев и использовались для обозначения специальной информации, такой как автор класса или метода или ссылок на другие сущности.
В некоторых случаях они также использовались для генерации кода, облегчая набор инструментов javadoc.
Поскольку эти аннотации были частью кода, их нельзя было каким-либо образом использовать во время выполнения, поскольку они не были частью байтового кода.
С java-5 аннотации стали неотъемлемой частью синтаксиса java. Аннотации могут быть определены с использованием синтаксиса, аналогичного определению интерфейсов. Их можно использовать для аннотирования классов, методов, полей, параметров и пакетов.
В зависимости от определения аннотация доступна в исходном коде, байтовом коде или во время выполнения. Поэтому их можно использовать для генерации кода, манипулирования байтовым кодом во время загрузки класса и посредством отражения во время выполнения.
Для получения дополнительной информации см. Страницу Wiki и docs.oracle.com.
Атрибуты C#
Атрибуты C# аналогичны аннотациям Java, они предоставляют мощный метод связывания декларативной информации с кодом C# (типы, методы, свойства и т. д.). После связывания с программной сущностью атрибут может быть запрошен во время выполнения и использован любым количеством способов.