C#中“string @namespace”的含义是什么?

时间:2016-04-07 07:52:26

标签: c#

我遇到了一些代码(发布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();
     }

 }

我是否正确地假设这是某种我不知道的编码约定?该行是否应被某些东西取代?

4 个答案:

答案 0 :(得分:1)

@符号将允许您使用保留字。因此,无论何时您想要使用(,您可以尝试避免)变量中的标识符或关键字,您都需要在其旁边放置@符号。

MSDN说:

  

前缀" @"允许使用关键字作为标识符,即   在与其他编程语言交互时很有用。

答案 1 :(得分:1)

这是因为namespace是C#中的保留字。如果您希望代码中的标识符与某个保留字匹配,则必须更改标识符。您可以使用下划线,有时人们会使用@。与_namespace@event一样。

答案 2 :(得分:1)

https://msdn.microsoft.com/en-us/library/aa664670.aspx

  

前缀" @"允许使用关键字作为标识符,这在与其他编程语言交互时很有用。字符@实际上不是标识符的一部分,因此标识符可能在其他语言中看作普通标识符,没有前缀。带有@前缀的标识符称为逐字标识符。允许使用@前缀作为非关键字的标识符,但强烈建议不要使用样式。

答案 3 :(得分:1)

@ - 符号作为前缀允许您再次使用保留关键字作为变量。关键字namespace,例如已经由语言本身保留。 但在我看来,这不是解决问题的常用方法。这是一种更好的方法来重命名变量,以便不存在冲突。

相关问题