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

时间:2010-05-12 11:23:43

标签: c# syntax field reserved-words

我正在浏览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等)?

5 个答案:

答案 0 :(得分:6)

基本上是的。在变量名前加上@可以阻止因变量名是关键字而发生错误。

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

答案 1 :(得分:4)

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

var @dynamic = ...
var @event = ....

我实际上是从this question

那里学到了这些东西

答案 2 :(得分:1)

是的,您可以使用@作为变量的first and only first字符。

答案 3 :(得分:1)

该技术通常与自动代码生成配对,因为可以生成作为目标语言中的关键字的标识符,例如,如果Xml架构在其上运行代码生成以生成C#类,则架构可能具有名为“event”的属性。这是一个C#关键字,因此代码生成器可以使用“@event”。

答案 4 :(得分:0)

正如其他人回答的那样,确切地说,你可以使用保留关键字,只要你用'@'作为前缀,但恕我直言,这不是一个好的开发实践。我宁愿只在机器生成的代码中使用它(例如,在我工作的公司中,我们有一个将Java代码转换为C#的工具;因为在Java中“event”不是保留字,我们的Java源代码可能包含此类标识符)

最佳

阿德