命名空間識別字 :: 命名空間或型別識別字 型別參數opt
namespace 命名空間1
{
class 類別 { }
}
namespace 命名空間2
{
class 類別 { }
}
namespace 命名空間
{
using 別名1 = 命名空間1;
using 別名2 = 命名空間2;
using 命名空間2;
class 類別1
{
別名1::類別 物件 = new 別名1::類別(); //命名空間1.類別
別名2::類別 物件 = new 別名2::類別(); //命名空間2.類別
類別 物件1 = new 類別(); //命名空間2.類別
}
}
- 如果命名空間識別字是global,判斷參考到的命名空間或型別優先順序如下:
- 如果沒有型別參數,參考到全域命名空間中與命名空間或型別識別字同名的命名空間
- 如果沒有型別參數,參考到全域命名空間中與命名空間或型別識別字同名的型別
- 參考到全域命名空間中與命名空間或型別識別字同名的泛型型別
- 編譯時產生錯誤
- 如果命名空間識別字不是global,判斷參考到的命名空間的優先順序如下:
- 本層命名空間與命名空間識別字同名
- 使用using指示詞匯入的命名空間中與命名空間或型別識別字同名的命名空間
- 編譯單位中與命名空間或型別識別字同名的命名空間
- 如果命名空間宣告或編譯單位中包含和命名空間識別字及命名空間或型別識別字關聯的using別名指示詞則會產生編譯錯誤
- 如果命名空間宣告或編譯單位中包含可以和命名空間識別字關聯的外部別名或using別名指示詞則:
- 如果沒有型別參數,且與命名空間識別字關聯的命名空間中存在與命名空間或型別識別字同名的命名空間
- 如果沒有型別參數,且與命名空間識別字關聯的命名空間中存在與命名空間或型別識別字同名的型別
- 與命名空間識別字關聯的命名空間中存在與命名空間或型別識別字同名的泛型型別
- 編譯時產生錯誤