namespace Csharp // 最外層
{
class Man { public string Name = "name in Man"; }
namespace Counter // 巢狀於 Csharp 內部
{
class Monkey { public string Name = "name in Monkey"; }
namespace Nestedspace // 再巢狀
{
class Man { public string Name = "nested name"; }
}
}
}
using System;
namespace Csharp
{
class Program
{
static void Main()
{
// 1. Csharp.Man
Csharp.Man mike = new Csharp.Man();
// 2. Counter.Monkey (需全域限定符 :: 避免衝突)
Counter.Monkey wukong = new global::Csharp.Counter.Monkey();
// 3. Counter.Nestedspace.Man
Counter.Nestedspace.Man jakson = new Counter.Nestedspace.Man();
Console.WriteLine($"Csharp.Man: {mike.Name}");
Console.WriteLine($"Counter.Monkey: {wukong.Name}");
Console.WriteLine($"Counter.Nestedspace.Man: {jakson.Name}");
}
}
}

global:: 全域限定符
// 兩個 Man 類別各自擁有 ChangeName 方法
public void ChangeName(string newName) { this.Name = newName; }
// 使用
mike.ChangeName("劉德華");
jakson.ChangeName("Mike Jachson");
Console.WriteLine(mike.Name); // 劉德華
Console.WriteLine(jakson.Name); // Mike Jachson

using NewName = Csharp.Csharp; // 別名 = 完整命名空間路徑
// 使用別名
NewName.Man newMan = new NewName.Man();
Console.WriteLine(newMan.Name); // name in Man
newMan.ChangeName("郭靖");
Console.WriteLine(newMan.Name); // 郭靖

using V1 = Lib.V1; using V2 = Lib.V2;
// 編譯時:csc /r:V1=LibV1.dll /r:V2=LibV2.dll
extern alias V1;
extern alias V2;
V1::Namespace.Class c1 = new V1::Namespace.Class();
V2::Namespace.Class c2 = new V2::Namespace.Class();
解決同一專案引用同一組件不同版本的極端需求。
巢狀命名空間提供層級化組織,global:: 確保根路徑解析,同名成員在不同命名空間完全隔離,using Alias = ... 別名簡化引用並解決衝突,extern alias 處理組件版本衝突。掌握這套機制,能從容應對百萬行級專案的命名空間管理挑戰。