What is the usage of global:: keyword in C#?

后端 未结 1 1459
半阙折子戏
半阙折子戏 2021-02-05 02:33

What is the usage of global:: keyword in C#? When must we use this keyword?

1条回答
  •  清歌不尽
    2021-02-05 03:16

    Technically, global is not a keyword: it's a so-called "contextual keyword". These have special meaning only in a limited program context and can be used as identifiers outside that context.

    global can and should be used whenever there's ambiguity or whenever a member is hidden. From here:

    class TestApp
    {
        // Define a new class called 'System' to cause problems.
        public class System { }
    
        // Define a constant called 'Console' to cause more problems.
        const int Console = 7;
        const int number = 66;
    
        static void Main()
        {
            // Error  Accesses TestApp.Console
            Console.WriteLine(number);
            // Error either
            System.Console.WriteLine(number);
            // This, however, is fine
            global::System.Console.WriteLine(number);
        }
    }
    

    Note, however, that global doesn't work when no namespace is specified for the type:

    // See: no namespace here
    public static class System
    {
        public static void Main()
        {
            // "System" doesn't have a namespace, so this
            // will refer to this class!
            global::System.Console.WriteLine("Hello, world!");
        }
    }
    

    0 讨论(0)
提交回复
热议问题