【问题标题】:Why does Visual Studio add an at sign (@) to my namespace?为什么 Visual Studio 会在我的命名空间中添加一个 at 符号 (@)?
【发布时间】:2010-11-07 08:26:29
【问题描述】:

我有一个名为 Site 的 Web 应用程序项目,其中有一个名为 SITE 的文件夹(我知道,这不是最好的命名约定,但那是另一回事了)。

当我检查设计器生成的代码时,它是这样开始的:

namespace Site.@__SITE__ {

为什么要添加 at 符号?我可以删除它,项目编译并运行良好。此外,无论有无 at 符号,实际的命名空间都是 Site.__SITE__

谢谢!

【问题讨论】:

    标签: c# .net asp.net visual-studio namespaces


    【解决方案1】:

    @ 出现在 C# 中的标识符之前时,编译器将以下字符串视为标识符,即使该字符串是关键字。

    这只是对自动生成的标识符的一种安全措施。

    【讨论】:

      【解决方案2】:

      当标识符与内置关键字冲突时,使用 @ 前缀。据推测,双下划线标识符是为将来使用而保留的,因此设计者谨慎行事。

      【讨论】:

        【解决方案3】:

        他们会这样做,以防您将“站点”命名为保留关键字...因此,如果您的站点名称是“类”:-P,@ 符号将允许将该名称用作命名空间

        【讨论】:

          【解决方案4】:

          @ 符号是一种允许在 C# 应用程序中使用与 C# 关键字冲突的名称的方法。 C# 中以 __ 开头的所有名称都保留供将来使用。因此,每当 CodeDom 发出名称以 __ 为前缀的代码时,它都会发出一个 @ 符号以保证该名称是合法的,因为它可能与未来的 C# 关键字冲突。

          您看到的代码可能遵循相同的规则,或者只是作为 CodeDom 的一部分发出

          【讨论】:

            猜你喜欢
            • 2011-02-11
            • 1970-01-01
            • 1970-01-01
            • 2013-05-14
            • 2017-11-15
            • 2012-11-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多