C#类中的@namespace字段是什么?

Ars*_*nko 8 c# syntax field reserved-words

我正在浏览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);
}
Run Code Online (Sandbox Code Playgroud)

这是什么?它只是一个简单的字段,其中使用at符号表示它是一个字段,而不是一个namespace关键字?如果是这样,可以在-符号被用于任何保留字(例如@dynamic,@using等)?

Jas*_*ans 6

基本上是的.在变量名称前加上@会因为变量名称是关键字而停止发生错误.

http://msdn.microsoft.com/en-us/library/x53a06bb(VS.71).aspx

  • 在前面放置下划线(或任何其他角色)有什么区别? (3认同)
  • @adrianm:我发现的差异在于,当使用反射时,`FieldInfo.Name`如果`@ namespace`将是'namespace',而`_namespace`的名称将是'_namespace'. (2认同)

Mik*_*Two 4

是的,@ 符号可以放在保留字前面,以允许它们用作变量名。

var @dynamic = ...
var @event = ....
Run Code Online (Sandbox Code Playgroud)

我实际上从这个问题中学到了这一点以及其他东西