動態

詳情 返回 返回

C# 的 namespace - 動態 詳情

namespace 關鍵字用於聲明包含一組相關對象的作用域。可以使用命名空間來組織代碼元素並創建全局唯一類型。

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate ( int i );

    namespace Nested
    {
        class SampleClass2 { }
    }
}

文件範圍的命名空間聲明使你能夠作出以下聲明:一個文件中的所有類型都在一個命名空間中。C# 10 中可使用文件範圍的命名空間聲明。以下示例與前面的示例類似,但使用了一個文件範圍的命名空間聲明:

using System;

namespace SampleFileScopedNamespace;

class SampleClass { }

interface ISampleInterface { }

struct SampleStruct { }

enum SampleEnum { a, b }

delegate void SampleDelegate(int i);

使用文件作用域命名空間中的語句

使用文件範圍的命名空間時,語句的位置 using 會影響其在文件中的範圍。文件範圍的命名空間低於等效的傳統命名空間聲明,該聲明以文件末尾的右括號結尾。此行為確定在何處 using 應用指令,如下所示:

  • 如果語句 using 放置在文件範圍的命名空間聲明之前,則它們被視為不在命名空間之外,並解釋為完全限定的命名空間。
  • 如果在文件範圍的命名空間聲明之後放置這些 using 語句,則它們的範圍在命名空間本身內。

例如:

// 這種使用是在命名空間作用域之外的,因此它適用於全局
using System;

namespace SampleNamespace; // 文件作用域的命名空間聲明

// 這種使用是在命名空間作用域中
using System.Text;

public class SampleClass
{
    // Class members...
}

在上面的示例中,System 全局可訪問,而 System.Text 僅適用於 .SampleNamespace。

前面的示例不包括嵌套命名空間。文件範圍的命名空間不能包含其他命名空間聲明。不能聲明嵌套的命名空間或第二個文件範圍的命名空間:

namespace SampleNamespace;

class AnotherSampleClass
    {
        public void AnotherSampleMethod()
            {
                Console . WriteLine ( "例子空間內的例子方法");
            }
    }

namespace AnotherNamespace; // 不允許!

namespace ANestedNamespace // 不允許!
{
   // 聲明……
}

在命名空間中,可以聲明零個或多個以下類型:

  • class
  • interface
  • struct
  • enum
  • delegate
  • 可以聲明嵌套的命名空間(文件範圍的命名空間聲明除外)

編譯器會添加默認命名空間。此未命名的命名空間(有時被稱為全局命名空間)存在於每個文件中。它包含未包含在已聲明的命名空間中的聲明。全局命名空間中的任何標識符都可用於已命名的命名空間。

命名空間隱式具有公共訪問權限。

可以在兩個或多個聲明中定義一個命名空間。例如,以下示例將兩個類定義為 MyCompany 命名空間的一部分:

namespace MyCompany.Proj1
{
    class MyClass
        {
        }
}

namespace MyCompany.Proj1
{
    class MyClass1
        {
        }
}

以下示例顯示如何在嵌套命名空間中調用靜態方法。

namespace SomeNameSpace
    {
        public class MyClass
        {
            static void Main()
                {
                    Nested.NestedNameSpaceClass.SayHello();
                }
        }

    // 嵌套的空間
    namespace Nested
        {
            public class NestedNameSpaceClass
                {
                    public static void SayHello()
                        {
                            Console.WriteLine("你好啊!");
                        }
                }
        }
    }

Add a new 評論

Some HTML is okay.