命名空間就是namespace,它的使用可以避免名稱衝突,也有樹狀的程式架構

使用方法如下

namespace MyOwnNameSpace
{
    namespace AppOneFunction
    {
        class PrintScreen
        {
            public static void Print()
            {
                Console.WriteLine("AppOneFunction Printing.");
            }
        }
    }
}

這是第一種宣告方法,你可以看到它是依據階層,一層一層的宣告下去,每一層都以namespace為關鍵字

第二種宣告方法如下

namespace MyOwnNameSpace.AppTwoFunction
{
    class PrintScreen
    {
        public static void Print()
        {
            Console.WriteLine("AppTwoFunction Printing.");
        }
    }    
}

這種方法是直接在第一行就把階層給講明了,二種方法皆可行

那要怎麼使用宣告了的命名空間的成員或屬性呢??如下

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            MyOwnNameSpace.AppOneFunction.PrintScreen.Print();
            MyOwnNameSpace.AppTwoFunction.PrintScreen.Print();
        }        
    }
}

這是自己宣告的namespace和Main()是在同一個檔案裡,所以可以直接呼叫使用,可以看到它的使用方法就是直接全部階層都寫出來.

這樣全階層寫很累耶!!所以可以使用using的方式在檔頭載入,如下

using System;
using MyOwnNameSpace.AppOneFunction;
using MyOwnNameSpace.AppTwoFunction;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            PrintScreen.Print();
            PrintScreen.Print();
        }        
    }
}

但上例是無法使用的,因為我們有說到命名空間可以避免名稱衝突,所以在全部階層都寫的情形下,它允許不同的命名空間可以有相同的成員名稱.

但因為我們使用了using後,把前面的階層拿掉了,你會發現上例的PrintScree.Print()無法明確的判斷到底是那個namespace下的.

解決方法就是使用命名空間的別名,例子如下

using System;
using AppOne = MyOwnNameSpace.AppOneFunction;
using AppTwo = MyOwnNameSpace.AppTwoFunction;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            AppOne.PrintScreen.Print();
            AppTwo.PrintScreen.Print();
        }        
    }
}

這樣程式就能明白你指的是那個PrintScreen.Print()了.

那如果自定義的命名空間不是和你的Main()放在一起的呢??

那你在做自定的命名空間時就要選類別庫的選項來開發,編譯後你會發現在你的專案目錄中有一個相同名稱的DLL檔

你要在你的Main()的專案中,使用加入參考的專案方式,使用檔案瀏覽找到要加入的DLL檔,之後就可以用using的方式加入了.

 

arrow
arrow

    痞客興 發表在 痞客邦 留言(0) 人氣()