我正在浏览the source code of StyleCop,我发现了一件奇怪的事情:
/// <summary>
/// The namespace that the rule is contained within.
/// </summary>
private string @namespace;
// [...]
internal Rule(string name, string @namespace, string checkId, string context, bool warning) : this(name, @namespace, checkId, context, warning, string.Empty, null, true, false)
{
Param.Ignore(name, @namespace, checkId, context, warning);
}
这是什么东西?它只是一个简单的字段,其中使用at符号表示它是一个字段,而不是namespace
关键字?如果是,可以将签名用于任何保留字(例如@dynamic
,@using
等)?
答案 0 :(得分:6)
基本上是的。在变量名前加上@可以阻止因变量名是关键字而发生错误。
http://msdn.microsoft.com/en-us/library/x53a06bb(VS.71).aspx
答案 1 :(得分:4)
答案 2 :(得分:1)
是的,您可以使用@
作为变量的first and only first
字符。
答案 3 :(得分:1)
该技术通常与自动代码生成配对,因为可以生成作为目标语言中的关键字的标识符,例如,如果Xml架构在其上运行代码生成以生成C#类,则架构可能具有名为“event”的属性。这是一个C#关键字,因此代码生成器可以使用“@event”。
答案 4 :(得分:0)
正如其他人回答的那样,确切地说,你可以使用保留关键字,只要你用'@'作为前缀,但恕我直言,这不是一个好的开发实践。我宁愿只在机器生成的代码中使用它(例如,在我工作的公司中,我们有一个将Java代码转换为C#的工具;因为在Java中“event”不是保留字,我们的Java源代码可能包含此类标识符)
最佳
阿德