C# prefixing parameter names with @ [duplicate]

Possible Duplicate:
What does the @ symbol before a variable name mean in C#?

Duplicate:

What does the @ symbol before a variable name mean in C#?

Sometimes I see some C# code where a method-parameter is prefixed with an @, like this:

public static void SomeStaticMethod( SomeType @parameterName ) { }

What is the meaning of this ? Does it has some significant special meaning ?

I am creating an EventListener in NHibernate, and when I let VS.NET generate the interface methods, it generates the OnPostLoad method like this:

public class PostLoadEventListener : IPostLoadEventListener
{
    public void OnPostLoad( PostLoadEvent @event )
    {

    }
}

Why is this ?


Solution 1:

Try and make a variable named class and see what happens -- You'll notice you get an error.

This lets you used reserved words as variable names.

Unrelated, you'll also notice strings prefixed with @ as well -- This isn't the same thing...

string says = @"He said ""This literal string lets me use \ normally 
    and even line breaks"".";

This allows you to use 'literal' value of the string, meaning you can have new lines or characters without escapes, etc...

Solution 2:

The @ prefix allows you to use reserved words like class, interface, events, etc as variable names in C#. So you can do

int @int = 1

Solution 3:

event is a C# keyword, the @ is an escape character that allows you to use a keyword as a variable name.