I've known for a long time that C# identifiers could have an optional @ sign in front of them, but until recently I thought that the character became part of the identifier.
int foo = 3;
int @foo = 4; //<-- error here: identifier 'foo' already in scope
So, it's really a way to call into code that may have been written in another CLR language that has identifiers that clash with C#'s reserved and keywords.
By way of example, to call the following VB.NET function
Public Class VerbatimIdentifierTest
Public Shared Function int(ByVal value As Double) As Integer
from C# you'd invoke: