namespace

參考資料:(https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/namespaces/using-namespaces)

C# or .NET Framework 利用命名空間來組織多種類別。 宣告自己的命名類別,有助於在較大型的程式設計專案,控制類別和方法名稱的範圍。

存取命名空間

程式的開頭先設定好,應該就類似java的import。

using System;

在程式開始撰寫後,可以這樣寫:

Console.WriteLine("Hello world!");

就不需要寫成

System.Console.WriteLine("Hello world!");

命名空間別名

using Co = Company.Proj.Nested;

使用命名空間控制範圍

namespace 是用來宣告命名空間的。

從下列程式可觀察出,SampleClass此類別分別在命名空間SampleNamespace及其巢狀命名空間NestedNamespace中。根據底下Program的程式,可以了解是如何呼叫的。

namespace SampleNamespace
{
    class SampleClass
    {
        public void SampleMethod()
        {
            System.Console.WriteLine(
              "SampleMethod inside SampleNamespace");
        }
    }

    // Create a nested namespace, and define another class.
    namespace NestedNamespace
    {
        class SampleClass
        {
            public void SampleMethod()
            {
                System.Console.WriteLine(
                  "SampleMethod inside NestedNamespace");
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Displays "SampleMethod inside SampleNamespace."
            SampleClass outer = new SampleClass();
            outer.SampleMethod();

            // Displays "SampleMethod inside SampleNamespace."
            SampleNamespace.SampleClass outer2 = new SampleNamespace.SampleClass();
            outer2.SampleMethod();

            // Displays "SampleMethod inside NestedNamespace."
            NestedNamespace.SampleClass inner = new NestedNamespace.SampleClass();
            inner.SampleMethod();
        }
    }
}

若有相同名稱

.會先找近的,遠的會被隱藏。 ::會去找命名空間的(別名)。可以使用別名。 global::會去找全域命名空間的。不可以使用別名。

(文章內的敘述:在一般情況下,使用 :: 來參考命名空間別名,或使用 global:: 參考全域命名空間,以及使用 . 來限定類型或成員。)

global不是預先定義別名,只有在與::搭配使用才有特殊意義。

Last updated