我遇到了一些代码(发布here),我似乎无法弄清楚我应该怎么做。 @namespace
在代码中出现三次。这就是我正在看的内容。
public string GetFullSchema()
{
string @namespace = "yourNamespace";
var q = from t in Assembly.GetExecutingAssembly().GetTypes()
where t.IsClass && t.Namespace == @namespace
select t;
XmlReflectionImporter importer = new XmlReflectionImporter(@namespace);
XmlSchemas schemas = new XmlSchemas();
XmlSchemaExporter exporter = new XmlSchemaExporter(schemas);
foreach (var x in q)
{
var map = importer.ImportTypeMapping(x);
exporter.ExportTypeMapping(map);
}
using (MemoryStream ms = new MemoryStream())
{
schemas[0].Write(ms);
ms.Position = 0;
return new StreamReader(ms).ReadToEnd();
}
}
我是否正确地假设这是某种我不知道的编码约定?该行是否应被某些东西取代?
答案 0 :(得分:1)
@符号将允许您使用保留字。因此,无论何时您想要使用(,您可以尝试避免)变量中的标识符或关键字,您都需要在其旁边放置@符号。
MSDN说:
前缀" @"允许使用关键字作为标识符,即 在与其他编程语言交互时很有用。
答案 1 :(得分:1)
这是因为namespace
是C#中的保留字。如果您希望代码中的标识符与某个保留字匹配,则必须更改标识符。您可以使用下划线,有时人们会使用@
。与_namespace
或@event
一样。
答案 2 :(得分:1)
https://msdn.microsoft.com/en-us/library/aa664670.aspx
前缀" @"允许使用关键字作为标识符,这在与其他编程语言交互时很有用。字符@实际上不是标识符的一部分,因此标识符可能在其他语言中看作普通标识符,没有前缀。带有@前缀的标识符称为逐字标识符。允许使用@前缀作为非关键字的标识符,但强烈建议不要使用样式。
答案 3 :(得分:1)
@
- 符号作为前缀允许您再次使用保留关键字作为变量。关键字namespace
,例如已经由语言本身保留。
但在我看来,这不是解决问题的常用方法。这是一种更好的方法来重命名变量,以便不存在冲突。