Most attributes end with the word Attribute, including ColumnAttribute, CLSCompliantAttribute, and SerializableAttribute. The compiler allows you to exclude the last word of Attribute. It is the programmer's choice whether to add attributes to such names or not.
The attribute suffix, however, is just conditional: it is perfectly correct, although unusual, to define an attribute, for example, as follows:
[AttributeUsage(AttributeTargets.All)] public class Foo : Attribute { }
same as, for example, to define an exception called Throwable.
source share