C#中名稱空間

C#與JAVA的關於名稱空間的方面是有所區別的,C#使用namespace關鍵字。

C#的名稱空間是可以嵌套的,不過嵌套+別名可能會產生一些問題,下面做一下相關的備註。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using MyNameSpace = ConsoleApplication1.NameSpace;

namespace ConsoleApplication1
{
    namespace NameSpace
    {
        public class MyClass
        {
            public void print()
            {
                Console.WriteLine("NameSpace");
            }
        }
    }

    namespace MyNameSpace
    {
        public class MyClass
        {
            public void print()
            {
                Console.WriteLine("MyNameSpace");
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyNameSpace.MyClass a = new MyNameSpace.MyClass();
            a.print();
            MyNameSpace::MyClass b = new NameSpace.MyClass();
            b.print();
            Console.ReadKey();
        }
    }
}

輸出的話第一行輸出MyNameSpace,第二行輸出NameSpace。

通過上面這個例子我們需要知道,如果別名與其他名稱空間產生衝突,採用別名.子名稱空間的寫法是不會指向別名的名稱空間,別名的名稱空間被隱藏了,如果要訪問則需要使用::的符號,它會強制編譯器使用由using語句定義的別名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章