What is global::?

前端 未结 4 1748
盖世英雄少女心
盖世英雄少女心 2020-12-02 16:15

In C# I see global:: used quite often in auto-generated code. It is not something I have ever used myself so I don\'t know what the purpose is. Can someone ex

4条回答
  •  甜味超标
    2020-12-02 16:49

    global refers to the global namespace, it can be used to solve problems whereby you may redefine types. For example:

    class foo
    {
        class System
        {
    
        }
    
    }
    

    If you were to use System where it would be locally scoped in the foo class, you could use:

    global::System.Console.WriteLine("foobar");
    

    to access the global namespace.

    Example

    using System;
    
    class Foo
    {
        public void baz()
        {
            Console.WriteLine("Foo 1");
        }
    }
    
    namespace Demo
    {
        class Foo
        {
            public void baz()
            {
                Console.WriteLine("Foo 2");
            }
        }
    
        class Program
        {
            protected static global::Foo bar = new global::Foo();
    
            static void Main(string[] args)
            {
                bar.baz(); // would write Foo 1 to console as it refers to global scope
                Foo qux = new Foo();
                qux.baz(); // would write Foo 2 to the console as it refers to the Demo namespace
            }
        }
    }
    

提交回复
热议问题