程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 使用名字空間

使用名字空間

編輯:關於C#

16.2.1 名字空間的聲明

名字空間的聲明是關鍵字"namespace"後面跟名字空間名和名字空間主體,然後還可以跟一個分號。格式如下:

namespace qualified-identifier namespace-body;

名字空間的聲明要麼在編譯單元(源文件)的第一行出現,要麼作為成員出現在其它名字空間的聲明之中。首次聲明的名字空間是全局名字空間的成員,在別的名字空間內部聲明的名字空間作為外部名字空間的成員。在這兩種情況下,名字空間都不允許出現重名。

名字空間隱式地使用public修飾符,在聲明時不允許使用任何訪問修飾符。

下面這種形式可以采用非嵌套的語法來實現名字空間的嵌套聲明:

namespace N1.N2
{
 class A{}
 class B{}
}
上述代碼等價於:

namespace N1
{
 namespace N2
 {
   class A{}
   class B{}
 }
}

16.2.2 成員與類型聲明

名字空間的成員可以是一個類型(類、結構、接口、枚舉或代表),也可以是另一個名字空間。一個編譯單元或名字空間主體中可以包含多個成員聲明,這些聲明給編譯單元或名字空間主體中添加了新的成員。

名字空間中的類型聲明可以是類的聲明、結構的聲明、接口的聲明、枚舉的聲明,或者是代表的聲明。

一個類型聲明可以在編譯單元的第一行作為頂層聲明出現,也可以出現在編譯單元的內部,作為成員聲明。類型聲明還可以是在名字空間、類或結構的內部作為成員聲明出現。

對類型聲明的訪問權限與類型聲明所處的位置有關:

●對在編譯單元中一開始就聲明的類型,訪問權限可以是公有(public)的,也可以是內部(internal)的。默認的訪問權限是內部的。

●在類中聲明的類型,訪問權限可以是公有(public)的,保護(protected)的,內部(internal)的,或是私有(private)的。默認的訪問方式是私有的。

在結構聲明的類型,訪問權限可以是公有(public)的,內部(internal)的,或是私有(private)的。默認的訪問方式是私有的。

16.2.3 改寫“Welcome”程序

為了演示名字空間的基本用法,我們把第三章的“Welcome”程序分為庫和控制台兩部分。庫用來提供顯示的消息,控制台程序執行顯示。

首先讓我們看一下庫文件,其中包含了一個WelcomeMessage類。

程序清單16-1:

//庫文件 WelcomeLibrary.cs

namespace MyProgram.CSharp.FirstApp
{
 public class Welcome.Message
 {
  string m_message;
  public WelcomeMessage()
  {
    m_message="Welcome!";
  }
  public string Message{
           get{
               return m_message;
           }
        set{
            m_message=value;
        }
  }
 }
}

上面的代碼展示了在名字空間MyProgram.CSharp.FirstApp定義的類WelcomeMessage,類WelcomeMessage提供了可讀的屬性Message。我們看到,名字空間可以嵌套,比如聲明:

namespace MyProgram.CSharp.FirstApp
{...}

實際上是以下多層名字空間的嵌套:

namespace MyProgram
{
 namespace CSharp
 {
   namespace FirstApp
   {...}
  }
}

“Welcome”程序組件化的下一步就是編寫客戶控制台程序,客戶程序將使用庫中提供的類WelcomeMessage。實際上WelcomeMessage這個類的全名應該是MyProgram.CSharp.FirstApp.WelcomeMessage,但這種方法使用的書寫的名字太長,顯得過於笨拙。一個簡單的方法是預先導入名字空間,這樣就可以不通過全名來使用名字空間的所有類型。

程序清單16-2:

//客戶程序源文件WelcomeApp.cs

using System;
using MyProgram.CSharp.FirstApp;
class WelcomeApp
{
 public static void Main(){
    WelcomeMessage M=new WelcomeMessage();
    System.Console.WriteLine(M.Message);
    System.Console.WriteLine("Please Enter your name:");
    string input=System.Console.ReadLine();
    M.Message="Welcome"+input;
    System.Console.WriteLine(M.Message);
   }
}

上例中,導入了名字空間MyProgram.CSharp.FirstApp後,每次出現的WelcomeMessage實際上就是MyProgram.CSharp.FirstApp.WelcomeMessage的簡寫。

我們寫的代碼可以編譯後產生一個包含類WelcomeMessage的庫,以及一個包含類WelcomeApp的應用程序。具體的編譯步驟的細節,可能會因為使用編譯器或工具的不同而不同。使用Visual Studio 7.0提供的命令行編譯器,正確的語法應該是:

csc /target:library WelcomeLibrary.cs

上面這條語句產生WelcomeLibrary.dll類庫。

csc /reference:WelcomeLibrary.dll WelcomeApp.cs

上面這條語句產生WelcomeApp.exe應用程序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved