Disclaimer: I do not condone the use of this tip. I just find it interesting.
Today, I was using ReSharper to rename some constants in a class. The constants were named inch
, pica
, and point
. I wanted to rename them to in
, pc
, and pt
. Resharper caught the obvious error in my thinking which is that the name in
is a reserved keyword in C# (duh).
What I found interesting is that ReSharper didn't go ahead and follow my instructions (thanks!) or tell me I was being dumb for trying to name something using the same name as the reserved word; it renamed it to @in
.
Huh. A quick search revealed that yes indeed, any member can begin with the @ character. You learn something new every day. Therefore this code is valid:
public class @foo
{
private string @baa = "sheep";
private void @black()
{
Console.Write("Hello" + @sheep);
}
}
I also noted that even Intellisense doesn't correctly colour-code when @ is used to prefix a class' name.
Follow-up: Apparently they are called verbatim identifiers. Thanks SubsonicDesignOfficial.