C#|::运算符和全局命名空间

发现 C# 还要和 C++ 一样的::运算符,来测试一下。

命名空间被赋值别名以后,可以隐藏掉原有的命名空间。想要访问需要完整路径。如果不用,可以用::运算法,它的优先级被高。

看下下面的例子:

using System;

namespace ConsoleApp1
{
    // 同名的别名空间
    using MyNamespaceAlias = MyRootNamespace.MyNestedNamespace;

    namespace MyRootNamespace
    {
        namespace MyNamespaceAlias
        {
            public class MyClass
            {
                public static void Print()
                {
                    Console.WriteLine("MyRootNamespace.MyNamespaceAlias.MyClass.Print()");
                }
            }
        }
        namespace MyNestedNamespace
        {
            public class MyClass
            {
                public static void Print()
                {
                    Console.WriteLine("MyRootNamespace.MyNestedNamespace.MyClass.Print()");
                }
            }
        }


        class Program
        {
            static void Main(string[] args)
            {
                MyRootNamespace.MyNestedNamespace.MyClass.Print(); // 可简化名称如下

                MyRootNamespace.MyNamespaceAlias.MyClass.Print(); // 原有的 MyNamespaceAlias 命名空间屏蔽了别名空间。

                // 使用::运算符,迫使编译器使用别名
                MyNamespaceAlias::MyClass.Print();
			   // MyRootNamespace. MyNamespaceAlias::MyClass.Print(); // 这样会报错不行,原因是显然的,::指向别名。


                Console.ReadKey();
            }
        }
    }
}

对照输出顺序就,结合代码注释,可以看出区别:

MyRootNamespace.MyNestedNamespace.MyClass.Print()
MyRootNamespace.MyNamespaceAlias.MyClass.Print()
MyRootNamespace.MyNestedNamespace.MyClass.Print()

这种方式在大项目出现别名和.NET命名空间重名的时候有用,一般用不上吧?!

global是顶级根命名空间的别名,如果出现上面所说的那种情况,可以这样:

global::System.Collections.Generic.List<int>   // 一个示例



参考:
《C#入门经典第三版》P305

posted @   double64  阅读(1056)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示