2010-01-11 63 views

回答

48

這是namespace alias qualifier operator。引用鏈接到MSDN頁面:

命名空間別名限定符(::)用於查找標識符。它總是位於兩個標識符之間,如本例:

global::System.Console.WriteLine("Hello World"); 
-5

它是範圍解析運算符:

http://en.wikipedia.org/wiki/Scope_resolution_operator

範圍解析運算符(::)在 C++用於與定義已經 聲明的成員函數(在 頭文件.hpp或.h 擴展名)

+4

這是一個足夠體面的答案,但與C#相關的問題,而不是C++,如引用所示。幸運的是,在各種語言之間運算符的使用幾乎相同 –

+7

它並不是真的「幾乎相同」:在C++中它用於在類聲明之外定義成員函數,在C#中用於消除類型名稱的歧義。 – itowlson

+3

根據MSDN(http://msdn.microsoft.com/en-us/library/2hxce09y%28VS.80%29.aspx),C#的作用域解析運算符是。不是:: – Ferruccio

33

這是命名空間別名限定符。它用於具有相同名稱和相同名稱空間的兩種不同類型(來自不同程序集)的潛力。例如。我們的ORM產品與VistaDB 3和VistaDB 4對話。在這兩種情況下,連接類都是VistaDB.Provider.VistaDBConnection。因此,我們extern alias VistaDB 3程序集到vdb3和VistaDB 4程序集到vdb4,現在可以將連接類消除歧義爲vdb3::VistaDB.Provider.VistaDBConnectionvdb4::VistaDB.Provider.VistaDBConnection。如果沒有別名限定符,這些會引發「模棱兩可的參考」編譯器錯誤。

+2

但是你不能寫'vdb3.VistaDB.Provider.VistaDBConnection'和'vdb4 :: VistaDB.Provider.VistaDBConnection'嗎? –