位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

C# ::運(yùn)算符和全局名稱空間限定符

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-08

    ::運(yùn)算符提供了另一種訪問(wèn)名稱空間中類型的方式。如果要使用一個(gè)名稱空間的別名,但該別名與實(shí)際名稱空間層次結(jié)構(gòu)之間的界限不清晰,就必須使用::運(yùn)算符。在那種情況下,名稱空間層次結(jié)構(gòu)優(yōu)先于名稱空間別名。為闡明其含義,考慮下列代碼:

using MyNamespaceAlias = MyRootNamespace.MyNestedNamespace; 

namespace MyRootNamespace 

{

    namespace MyNamespaceAlias 

    {

        public class MyClass {}

    }

    namespace MyNestedNamespace 

    {

        public class MyClass {}

    }

}

MyRootNamespace中的代碼使用以下代碼引用一個(gè)類:

    MyNamespaceAlias.MyClass

這行代碼引用的類是 M>RootNamespace.MyNamespaceAlias.MyClass,而不是 MyRootNamespace.MyNested-Namespace.MyClass。也就是說(shuō),MyRootNamespace.MyNamespaceAlias 名稱空間隱藏了由 using 語(yǔ)句定義的別名,該別名引用MyRootNamespace. MyNestedNamespace名稱空間。仍然可以訪問(wèn)這個(gè)名稱空間以及其中包含的類,但需要使用不同的語(yǔ)法:

    MyNestedNamespace.MyClass

另外,還可以使用::運(yùn)算符:

    MyNamespaceAlias::MyClass

使用這個(gè)運(yùn)算符會(huì)迫使編譯器使用由using語(yǔ)句定義的別名,因此代碼引用MyRootNamespace.MyNestedNamespace.MyClass。

二運(yùn)算符還可以與global關(guān)鍵字一起使用,它實(shí)際上是頂級(jí)根名稱空間的別名。這有助于更清晰地說(shuō)明要引用哪個(gè)名稱空間,如下所示:

    global::System.Collections.Generic,List<int>

這是希望使用的類,即List<TV泛型集合類。它肯定不是用下列代碼定義的類:

namespace MyRootNamespace 

{

  namespace System 

  {

    namespace Collections 

    {

      namespace Generic 

      {

        class List<T> {}

      }

    }

  }

}

當(dāng)然,應(yīng)避免使名稱空間的名稱與己有的.NET名稱空間相同,但這個(gè)問(wèn)題只在大型項(xiàng)目中才會(huì)出現(xiàn),作為大型開(kāi)發(fā)隊(duì)伍中的一員進(jìn)行開(kāi)發(fā)時(shí),此類問(wèn)題尤其嚴(yán)重。使用::運(yùn)算符和global關(guān)鍵字可能是訪問(wèn)所需類型的唯一方式。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部