2010-01-11 2 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#. not :: – Ferruccio

33

Это пространство имен псевдонима классификатор. Он используется, когда есть потенциал для двух разных типов с тем же именем и тем же пространством имен (исходящих из разных сборок). Например. наш продукт ORM рассказывает о VistaDB 3 и VistaDB 4. В обоих случаях класс подключения - VistaDB.Provider.VistaDBConnection. Итак, мы установили сборку VistaDB 3 на vdb3 и сборку VistaDB 4 до vdb4 и теперь можем устранить классы подключения как vdb3::VistaDB.Provider.VistaDBConnection и vdb4::VistaDB.Provider.VistaDBConnection. Без квалификатора псевдонима они бы вызвали ошибки компилятора «неоднозначной ссылки».

+2

Но вы не можете написать 'vdb3.VistaDB.Provider.VistaDBConnection' и' vdb4 :: VistaDB.Provider.VistaDBConnection' вместо этого? –

Смежные вопросы