[C#, CSharp, C Sharp 教學 教程 教材 Tutorial] 命名空間別名限定詞(Qualified-Alias-Member)
YehYeh\'s Notepad yehyeh@gmail.com 

[C#, CSharp] 命名空間別名限定詞(Qualified-Alias-Member)

命名空間別名限定詞

  • 命名空間別名限定詞 ::
    • 可以確保型別,避免參考到同命名空間的同名型別或使用using指示詞匯入的型別
  • 命名空間識別字 :: 命名空間或型別識別字 型別參數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,判斷參考到的命名空間或型別優先順序如下:
      1. 如果沒有型別參數,參考到全域命名空間中與命名空間或型別識別字同名的命名空間
      2. 如果沒有型別參數,參考到全域命名空間中與命名空間或型別識別字同名的型別
      3. 參考到全域命名空間中與命名空間或型別識別字同名的泛型型別
      4. 編譯時產生錯誤
    • 如果命名空間識別字不是global,判斷參考到的命名空間的優先順序如下:
      1. 本層命名空間與命名空間識別字同名
      2. 使用using指示詞匯入的命名空間中與命名空間或型別識別字同名的命名空間
      3. 編譯單位中與命名空間或型別識別字同名的命名空間
      4. 如果命名空間宣告或編譯單位中包含和命名空間識別字命名空間或型別識別字關聯的using別名指示詞則會產生編譯錯誤
      5. 如果命名空間宣告或編譯單位中包含可以和命名空間識別字關聯的外部別名using別名指示詞則:
        • 如果沒有型別參數,且與命名空間識別字關聯的命名空間中存在與命名空間或型別識別字同名的命名空間
        • 如果沒有型別參數,且與命名空間識別字關聯的命名空間中存在與命名空間或型別識別字同名的型別
        • 命名空間識別字關聯的命名空間中存在與命名空間或型別識別字同名的泛型型別
        • 編譯時產生錯誤
Δ 回到最上方