:: 运算符 - 命名空间别名运算符

使用命名空间别名限定符 :: 访问已设置别名的命名空间的成员。 只能使用两个标识符之间的 :: 限定符。 左侧标识符可以是命名空间别名、外部别名或 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);
    }
    
  • 外部别名

  • 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# 语言规范中的命名空间别名限定符部分。

另请参阅