可能重复:
What's the use/meaning of the @ character in variable names in C#?
我在几个地方看到过,包括Resharper转换代码......
SomeClass @object = new SomeClass( ... );
我认为这是匿名的,但我认为我错了
这真的意味着什么吗?
答案 0 :(得分:8)
前缀“@”允许使用关键字作为标识符,即 在与其他编程语言交互时很有用。该 character @实际上不是标识符的一部分,所以标识符 可能在其他语言中看作普通标识符,没有 字首。带有@前缀的标识符称为逐字 标识符
示例:强>
class @class
{
public static void @static(bool @bool) {
if (@bool)
System.Console.WriteLine("true");
else
System.Console.WriteLine("false");
}
}
答案 1 :(得分:2)
它允许您使用保留关键字作为标识符。例如,我遇到的常见情况是定义锁定对象,例如
object lock = new object(); // this would throw a compiler error as `lock` is a reserved word.
所以我必须用@
符号作为前缀,告诉编译器这不是一个类型而是文字:
object @lock = new object();
另一方面,如果您发生此类冲突,通常情况下这是一个很好的指示,表明您的身份证明不具备描述性。
答案 2 :(得分:1)
这背后的原因是对象是C#中受保护的关键字。 @符号将告诉编译器应该是变量的名称,不应与object
关键字混淆。
答案 3 :(得分:0)
它表示“文字”,即“此名称不是关键字或类型标识符”。没有它,object
将被视为一种类型。
答案 4 :(得分:0)
在this question中查看我的回答。
@
符号允许您在变量名称中使用reserved words。
int @class = 1;
void MyMethod(int @goto);
bool @public { get; set; }
答案 5 :(得分:0)
关键字是预定义的保留标识符,对编译器具有特殊含义。它们不能用作程序中的标识符,除非它们包含 @
作为前缀。例如, @if
是合法标识符,但如果不是因为它是关键字。
请参阅此C# Keywords