Decorating an element
with a custom attribute is known as
specifying the custom attribute. This is done by writing the name of
the
attribute enclosed in brackets ([ ]) immediately
before the element declaration as follows:
[Serializable] public class Foo {...}
In this example, the Foo class is specified as
serializable. This information is saved in the metadata for
Foo, and affects the way the CLR treats an
instance of this class.
A useful way to think about custom attributes is they expand the
built-in set of declarative constructs in the C# language, such as
public, private, and sealed.