【发布时间】:2011-02-18 14:00:41
【问题描述】:
我在浏览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-sign 用于指示它是一个字段,而不是 namespace 关键字?如果是这样,是否可以将 at-sign 用于任何保留字(例如 @dynamic、@using 等)?
【问题讨论】:
-
不仅是保留字;您可以以@ 开头any 标识符。为什么?因为你不知道未来哪些词会成为关键词。如果您偏执并担心有一天我们会将“blah”变成上下文关键字,那么您可以说“int @blah;”并确保即使我们添加了 blah 运算符,您的代码也会继续编译。
-
还要注意,该字段的名称是“namespace”,而不是“@namespace”。 @ 只是告诉编译器“后面的内容是名称,而不是关键字”。否则将被忽略。
标签: c# syntax field reserved-words