In C#, the @ symbol tells the compiler to take what's inside the string literally.
For example:
// without the literal
string NotLiteral = "This string has to escape \"special characters,\" such as\r\n\\, \\r, \\n, \\t, \\\", \\\'\r\nin order to be understood by the compiler.";
// with the literal
string Literal = @"This string has to escape ""special characters,"" such as
\, \r, \n, \t, \"", \'
in order to be understood by the compiler.";
// true
Response.WriteLine(NotLiteral == Literal);
Response.WriteLine(Literal);
// displays:
/*
True
This string has to escape "special characters," such as
\, \r, \n, \t, \", \'
in order to be understood by the compiler.
*/
Now, one thing to note is that literal strings still must escape double quotes, but now you escape them just like in VB.NET, by adding a second double quote ("" for one " inside of a literal string) instead of doing \". That is just a limitation of using double quotes to start and end a string, so there is nothing they could do to avoid that escape requirement.
Note that the literal string reads in the new lines (\r\n) that you entered by going to the next line without having to put them in manually and that the string itself spans 3 lines. The non-literal string could be broken into multiple strings to do this for clarity, such as (without a performance hit because the compiler should recognize 3 constant strings being concatenated and do that for us):
// without literal
string NotLiteral = "This string has to escape \"special characters,\" such as" +
"\r\n\\, \\r, \\n, \\t, \\\", \\\'" +
"\r\nin order to be understood by the compiler.";
Hopefully this was clear and not as jumbled as I am starting to think that it might be.