2010-01-11 846 views

Respuesta

48

Es la namespace alias qualifier operator. Citando de la página vinculada a MSDN:

El calificador espacio de nombres de alias (::) se utiliza para buscar los identificadores. Siempre se coloca entre dos identificadores, como en este ejemplo:

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

Es el operador de resolución de alcance:

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

el operador de resolución de ámbito (: :) en C++ se utiliza para definir los ya funciones miembro declarada (en el archivo de cabecera con la extensión .hpp o .h ) de la clase

+4

Esta es una respuesta bastante decente, pero las preguntas están relacionadas con C#, no con C++ como indica la cita. Afortunadamente, el uso del operador es prácticamente el mismo entre los idiomas –

+7

No es realmente "más o menos lo mismo": en C++ es para definir funciones miembro fuera de la declaración de clase, en C# es para la desambiguación de nombres de tipos. – itowlson

+3

Según MSDN (http://msdn.microsoft.com/en-us/library/2hxce09y%28VS.80%29.aspx), el operador de resolución de ámbito para C# es. not :: – Ferruccio

33

Este es el calificador espacio de nombres alias. Se usa cuando existe la posibilidad de dos tipos diferentes con el mismo nombre y el mismo espacio de nombres (procedentes de diferentes ensamblajes). P.ej. nuestro producto ORM habla con VistaDB 3 y VistaDB 4. En ambos casos, la clase de conexión es VistaDB.Provider.VistaDBConnection. Así que extern alias el ensamblado de VistaDB 3 a vdb3 y el ensamblado de VistaDB 4 a vdb4 y ahora podemos desambiguar las clases de conexión como vdb3::VistaDB.Provider.VistaDBConnection y vdb4::VistaDB.Provider.VistaDBConnection. Sin el calificador de alias, estos generarían errores de compilador de "referencia ambigua".

+2

¿Pero no puede escribir 'vdb3.VistaDB.Provider.VistaDBConnection' y' vdb4 :: VistaDB.Provider.VistaDBConnection' en su lugar? –

Cuestiones relacionadas