@
lets you use an identifier that would otherwise be interpreted as a keyword.
For example, if you want to have a variable named class, you can write this:
int @class;
Of course, because you can do it doesn't mean it's a good idea to do it.
Some situations where it's useful is code generators that create C# code from a template or external source. e.g. xsd.exe
is an SDK command-line tool creates C# classes that back up an XML schema. If your XML schema contains an element or attribute name that is reserved in C# (such as class), xsd.exe
would preserve the name in the matching C# class but it would prefix it with a @
.