He visto dos puntos dobles (::
) en el código generado. Me preguntaba cuál es su propósito.¿Cuál es el propósito de :: en C#?
Respuesta
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");
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
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".
¿Pero no puede escribir 'vdb3.VistaDB.Provider.VistaDBConnection' y' vdb4 :: VistaDB.Provider.VistaDBConnection' en su lugar? –
- 1. ¿Cuál es el propósito de typedefing una clase en C++?
- 2. ¿Cuál es el propósito de imbuir en C++?
- 3. ¿Cuál es el propósito de esta palabra clave en C#
- 4. ¿Cuál es el propósito de los Atributos en C#?
- 5. ¿Cuál es el propósito de "Container c = getContentPane();" en Swing?
- 6. ¿Cuál es el propósito de la directiva #define en C++?
- 7. ¿Cuál es el propósito de __cxa_pure_virtual?
- 8. ¿Cuál es el propósito de precompiledApp.config?
- 9. ¿Cuál es el propósito de 'var'?
- 10. ¿Cuál es el propósito del archivo vshost.exe?
- 11. ¿Cuál es el propósito del uso?
- 12. ¿Cuál es el propósito de config.assets.precompile?
- 13. ¿Cuál es el propósito de 'Class.forName ("MY_JDBC_DRIVER")'?
- 14. WPF: ¿Cuál es el propósito de App.xaml?
- 15. ¿Cuál es el propósito de `qt_noop`
- 16. ¿Cuál es el propósito de String.IsInterned?
- 17. ¿Cuál es el propósito de Rake?
- 18. ¿Cuál es el propósito de Function.const?
- 19. ¿Cuál es el propósito de layout.xml?
- 20. ¿Cuál es el propósito de requestWindowFeature()?
- 21. ¿Cuál es el propósito de IntentSender?
- 22. ¿Cuál es el propósito de utilizar NSOrderedSame?
- 23. ¿Cuál es el propósito de Mage_Core_Block_Template_Facade
- 24. ¿Cuál es el propósito de Membership.ValidateUser()
- 25. ¿Cuál es el propósito de Anorm's Pk?
- 26. ¿Cuál es el propósito de Active Records?
- 27. ¿Cuál es el propósito de 'n = n'?
- 28. C++ ¿Cuál es el propósito del casting para anular?
- 29. ¿cuál es el propósito de glClear (GL_DEPTH_BUFFER_BIT)
- 30. ¿Cuál es el propósito de git-mv?
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 –
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
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