【问题标题】:Namespace conflict in C#C#中的命名空间冲突
【发布时间】:2011-08-06 14:17:27
【问题描述】:

在我的程序命名空间中有一个System 命名空间。结果,我在我的内部看不到标准的System 命名空间。我该如何解决这个问题?

例如,在 C++ 中,:: 运算符将我“转移”出我的命名空间,因此我可以看到与当前命名空间同名的外部命名空间:

C#中有类似的运算符吗?

【问题讨论】:

  • 为什么不用System以外的更好的名字?
  • 很抱歉出轨了,但是如果这些屏幕截图来自 Visual Studio,您使用的是什么颜色主题?
  • @0A0D:我只是举例:)我只是想知道这个问题的答案
  • @Roberto Sebestyen:它不是VS的颜色主题,我在系统外观上改变了标准白色窗口的颜色,所以所有使用SystemColors.Window颜色的程序都有相同的灰色。对眼睛很好

标签: c# namespaces


【解决方案1】:

您需要使用global 关键字。这迫使命名空间解析从最顶部开始。它主要用于生成的代码中,以确保引用了正确的命名空间。

 global::System.Foo.Bar;

关于它的一些 MSDN 文档:http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx

【讨论】:

  • 顺便说一句,最好避免使用System 作为命名空间的名称。
  • 不幸的是,一些代码生成器没有添加“global::”关键字。 :-( 就像 WPF 使用的那样。
  • @MattGreer 我同意,但请记住,您也可能与第三方库的根命名空间发生冲突。
  • Handy MSDN Link that.
【解决方案2】:

为了更方便,你也可以给它一个别名:

using GSystem = global::System;

将允许您将全局 System 命名空间称为 GSystem 或您想调用的任何其他名称。

【讨论】:

    【解决方案3】:

    是的

    global::System
    

    奇怪的是你和系统发生了冲突。

    除了系统本身之外,任何东西都不应声明该命名空间......

    【讨论】:

    • 为了演示,他在自己的代码中声明了NamespaceConflict.System
    【解决方案4】:

    您可以使用global

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2010-09-20
      • 1970-01-01
      • 2013-01-26
      相关资源
      最近更新 更多