En MSDN puedo leer lo que hace, pero me gustaría saber qué hace técnicamente (le dice al compilador dónde buscar los tipos ...)? Me refiero a usarlo como una directiva.¿Qué hace la directiva de uso, exactamente?
Respuesta
La función principal de la directiva using
es hacer que los tipos dentro de un espacio de nombres estén disponibles sin calificación para el código de usuario. Considera el conjunto de espacios de nombres y tipos definidos en los ensamblados a los que se hace referencia y el proyecto que se está compilando.
Tomemos por ejemplo la definición siguiente en MyTypes.Dll
namespace MyTypes {
class Class1 {}
}
Consideremos ahora referencia a MyTypes.dll
de otro proyecto con un espacio de nombres diferente. Sin una directiva using para crear Class1
necesito para calificar el nombre
MyTypes.Class1 local1 = new MyTypes.Class1();
La directiva using
me permite eliminar esta calificación
using MyTypes;
...
Class1 local1 = new Class1();
using
informa al compilador qué espacios de nombres buscan los nombres utilizados en el archivo pero no definidos en el archivo.
@ respuesta de JaredPar es correcto, sin embargo, me gustaría añadir que no funciona del mismo modo que dice import
en Java. (Alguien me corrija si estoy equivocado acerca de Java de import
realidad importarlo en la memoria)
Es necesario incluir un DLL o referencia del proyecto con el fin de incluso ser capaz de utilizar using
sin embargo, no está cargado en la memoria hasta que realmente llamar a un método/propiedad/algo en el conjunto. De modo que podría tener using System.Linq;
, pero si no usa realmente ningún método Linq, nunca se cargará el conjunto Linq. (No estoy 100% seguro de que Linq está en su propio ensamblaje físico ya que los espacios de nombres y los ensamblajes no son 1: 1, pero para el ejemplo supongo que lo es)
usando simplemente indicar al compilador que se vaya al archivo de configuración del ensamblado y busque un archivo DLL específico con el nombre dado, si se encuentra el archivo DLL, entonces vincula ese archivo DLL al proyecto actual. usar es solo una operación de enlace para que DLL se comunique en un espacio compartido de la memoria. El chico de abajo es el correcto
- 1. ¿Qué hace offsetLeftAndRight() exactamente?
- 2. ¿Qué hace exactamente Panel.IsItemsHost?
- 3. ¿Qué hace exactamente org.apache.commons.lang.builder.CompareToBuilder?
- 4. ¿Qué hace fillMode exactamente?
- 5. ¿Qué hace pg_escape_string exactamente?
- 6. ¿Qué hace exactamente System.Diagnostics.Process UseShellExecute?
- 7. ¿Qué hace AFX_MANAGE_STATE (AfxGetStaticModuleState()) exactamente
- 8. ¿Qué hace exactamente android: layout_column?
- 9. ¿Qué hace exactamente removedOnCompletion = NO?
- 10. ¿Qué hace exactamente 'bloqueo Mutex'?
- 11. ¿Qué hace exactamente la instrucción BEQ?
- 12. ¿Qué hace exactamente -march = native?
- 13. ¿Qué hace exactamente la normalización en CSS?
- 14. ¿Qué hace exactamente la grilla 960?
- 15. ¿Qué es exactamente CDATA y qué hace?
- 16. ¿Qué hace exactamente Attach() en Entity Framework?
- 17. ¿Qué hace ReferenceLoopHandling.Ignore en Newtonsoft.json exactamente?
- 18. ¿Qué hace NSHandlesContentAsCompoundValueBindingOption de Cocoa binding exactamente?
- 19. ¿Qué hace exactamente la función gc_enable de PHP?
- 20. ¿Qué hace exactamente un controlador de rack?
- 21. ¿Qué significa exactamente "uso comercial"?
- 22. ¿Qué hace exactamente git rebase --skip do?
- 23. exactamente qué hace rake db: migrate do?
- 24. ¿Cómo saber qué hace exactamente Spring autowire?
- 25. ¿Qué hace mvn instalar en maven exactamente?
- 26. ¿Qué hace exactamente R CMD Sweave --pdf?
- 27. @ Scheduled & scheduler: ¿Qué hace exactamente pool-size?
- 28. ¿Qué hace exactamente + = do en python?
- 29. ¿Qué hace exactamente el método .join()?
- 30. ¿Qué hace exactamente la expresión de subrayado c `c_`?
también, si el tipo no se encuentra en el espacio de nombres de la aplicación, el compilador buscará los espacios de nombres incluidos mediante el uso, ¿verdad? – Loj
@Mojmi para el caso común sí. La búsqueda de nombres en realidad es bastante compleja y específicamente no hice ningún comentario sobre cómo funciona exactamente debido a la gran probabilidad de que los detalles de la diversión no sean correctos. – JaredPar