:: оператор — оператор псевдонима пространства имен

Используйте квалификатор псевдонима пространства имен :: для получения доступа к элементам пространства имен, обозначенного псевдонимом. Квалификатор :: используется только между двумя идентификаторами. Идентификатор слева может быть одним из псевдонимов пространства имен, экстерна или псевдонима global . Например:

  • Псевдоним пространства имен, созданный с помощью директивы псевдонима using:

    using forwinforms = System.Drawing;
    using forwpf = System.Windows;
    
    public class Converters
    {
        public static forwpf::Point Convert(forwinforms::Point point) => new forwpf::Point(point.X, point.Y);
    }
    
  • Псевдоним extern.

  • Псевдоним global, который является псевдонимом глобального пространства имен. Глобальное пространство имен — это пространство имен, содержащее пространства имен и типы, которые не объявлены внутри именованного пространства имен. При использовании с :: квалификатором global псевдоним всегда ссылается на глобальное пространство имен, даже если есть псевдоним пользовательского global пространства имен.

    В следующем примере используется псевдоним global для доступа к пространству имен .NET System, которое является элементом глобального пространства имен. Без псевдонима global доступ к определяемому пользователем пространству имен System, которое является элементом пространства имен MyCompany.MyProduct, будет осуществляться следующим образом:

    namespace MyCompany.MyProduct.System
    {
        class Program
        {
            static void Main() => global::System.Console.WriteLine("Using global alias");
        }
    
        class Console
        {
            string Suggestion => "Consider renaming this class";
        }
    }
    

    Примечание.

    Ключевое слово global является псевдонимом глобального пространства имен, только если оно является левым идентификатором квалификатора ::.

Можно также использовать маркер . для получения доступа к элементам пространства имен, обозначенного псевдонимом. При этом маркер . также используется для доступа к элементам типа. Квалификатор :: гарантирует, что его левый идентификатор всегда ссылается на псевдоним пространства имен, даже если существует тип или пространство имен с таким же именем.

Спецификация языка C#

Дополнительные сведения см. в описании квалификаторов псевдонимов пространства имен в спецификации языка C#.

См. также