首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >global::在.Net设计器文件中是什么意思?

global::在.Net设计器文件中是什么意思?
EN

Stack Overflow用户
提问于 2009-07-10 07:43:37
回答 4查看 1.5K关注 0票数 7

这里有一个问题,我已经有一段时间了,但实际上从来没有抽出时间来问……

在Visual Studio生成的相当多的设计器文件中,一些变量以global::为前缀,谁能解释一下这是什么意思,这个前缀有什么作用,我应该在哪里使用它?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-10 07:57:21

全局名称空间限定符允许您访问全局(“空”)名称空间中的成员。

如果要调用非限定类型(例如,MyClass.DoSomething()而不是MyNamespace.MyClass.DoSomething()),则假定该类型位于当前命名空间中。那么,如何限定该类型以表明它在全局/空名称空间中?

此代码示例(控制台应用程序)应说明其行为:

代码语言:javascript
运行
复制
using System;

namespace MyNamespace
{
    public class Program
    {
        static void Main(string[] args)
        {
            MessageWriter.Write();          // writes "MyNamespace namespace"
            global::MessageWriter.Write();  // writes "Global namespace"
            Console.ReadLine();
        }
    }

    // This class is in the namespace "MyNamespace"
    public class MessageWriter
    {
        public static void Write()
        {
            Console.WriteLine("MyNamespace namespace");
        }
    }
}

// This class is in the global namespace (i.e. no specified namespace)
public class MessageWriter
{
    public static void Write()
    {
        Console.WriteLine("Global namespace");
    }
}
票数 12
EN

Stack Overflow用户

发布于 2009-07-10 07:54:31

前缀表示全局命名空间。下面是一个示例:

代码语言:javascript
运行
复制
namespace Bar {
  class Gnat { }
}
namespace Foo {
  namespace Bar {
    class Gnat { }
  }
  class Gnus {
    Bar.Gnat a; // Foo.Bar.Gnat
    global::Bar.Gnat b; // Bar.Gnat
  }
}

注意成员a可能无意中引用了Foo.Bar.Gnat类。要避免这种情况,请使用global::前缀。

票数 4
EN

Stack Overflow用户

发布于 2009-07-10 08:34:59

在自动生成中使用global::namespace限定符,以防止通过嵌套命名空间进行类型解析时发生冲突。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1108236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档