命名空間是 C# 管理類別、避免名稱衝突的基石。當專案引用多個庫且存在同名類別(如 System.Net.Mail.MailMessage 與 System.Web.Mail.MailMessage)時,若未明確指定命名空間,編譯器將報錯「不明確的引用」。本文系統說明命名空間的定義、引用與實例化機制。
using System.Net.Mail;
using System.Web.Mail;
public partial class Dmanage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MailMessage mm = new MailMessage(); // 編譯錯誤:不明確的引用
}
}
解決方案:使用完整限定名稱或命名空間別名(詳見進階篇)。
namespace demostrator
{
public class Demo
{
private string name;
public Demo() { name = "luXiaofeng"; }
public Demo(string name) { this.name = name; }
public string GetName() { return this.name; }
}
public class Myname
{
private string name;
public Myname() { name = "bianceng"; }
public Myname(string name) { this.name = name; }
public string GetName() { return this.name; }
}
}
using demostrator; // 引用自訂命名空間
public partial class DemoPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 方式一:完整限定名稱
demostrator.Demo mydemo = new Demo();
demostrator.Myname myname = new Myname();
// 方式二:引用命名空間後直接使用類別名(推薦)
// Demo mydemo = new Demo();
// Myname myname = new Myname();
Response.Write("in Demo default name is " + mydemo.GetName());
Response.Write(" ___________________ ");
Response.Write("in Myname default name is " + myname.GetName());
}
}
in Demo default name is luXiaofeng ___________________ in Myname default name is bianceng
using 指令讓編譯器在解析類別名時搜尋指定命名空間new 類別名() 或 new 命名空間.類別名()GetName())存取私有欄位,體現封裝原則公司名.專案名 格式專案名.模組名命名空間雖然不影響運行時行為(IL 中類別完整名稱已包含命名空間),但它是大型專案程式碼組織、團隊協作與避免名稱汙染的必要工具。