Что делает глобальный:: средний в файлах разработчика .NET?

Нет, Вы не должны объявлять общедоступного конструктора; частные конструкторы пакета будут так же применимы. Классы вне пакета не были бы в состоянии использовать конструктора так или иначе, так как они не видят класс.

7
задан Sebastian Good 30 October 2012 в 18:57
поделиться

4 ответа

Квалификатор глобального пространства имен позволяет вам получить доступ к члену в глобальном («пустом») пространстве имен.

Если вы вызываете неквалифицированный тип (например, MyClass.DoSomething (), а не MyNamespace.MyClass.DoSomething ()), то предполагается, что он находится в текущем пространстве имен. Как тогда вы квалифицируете тип, чтобы сказать, что он находится в глобальном / пустом пространстве имен?

Этот пример кода (консольное приложение) должен иллюстрировать его поведение:

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
ответ дан 6 December 2019 в 09:21
поделиться

Префикс указывает на глобальное пространство имен. Вот пример:

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
ответ дан 6 December 2019 в 09:21
поделиться

Квалификатор global :: namespace используется в автоматически созданном для предотвращения коллизии при разрешении типов через вложенные пространства имен.

3
ответ дан 6 December 2019 в 09:21
поделиться

From here

When the left identifier is global, the search for the right identifier начинается с глобального пространства имен.

1
ответ дан 6 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: