Soy un desarrollador de Java, totalmente nuevo para C#. Actualmente estoy escribiendo un archivo DLL para su distribución en toda mi organización. Es una biblioteca muy simple que contiene un par de clases y no veo ningún uso real al ponerlas todas en un espacio de nombre por el simple hecho de hacerlo. ¿Realmente tengo que usar un espacio de nombres? Si es así, ¿por qué? ¿Es una especie de mejor práctica?pregunta básica sobre C# - ¿necesito un espacio de nombres?
Respuesta
¿Usted necesita uno? No. ¿Debe tener uno? Sí. Ayudará a evitar conflictos con clases con nombres idénticos en otros espacios de nombres sin tener que recurrir al uso feo (en mi humilde opinión) de global::
.
Además, el concepto es fácil de comprender e implementar, por lo que no hay una buena razón para evitar los espacios de nombres. – Raveline
Para aplicaciones de prueba desechables (por ejemplo, comprobación de respuestas de desbordamiento de pila), no utilizo un espacio de nombres. Para cualquier cosa más, lo hago. Es solo una cuestión de organización: si va a reutilizar el código, es útil separarlo de otro código que también está reutilizando en el mismo contexto. Lo que quiero decir es que, si estás creando una aplicación usando LibraryX y LibraryY, es útil poder diferenciarlos dentro de la aplicación. Es posible que ambos usen los mismos nombres de clase, por ejemplo, lo que hará que el código sea feo si no usas espacios de nombres.
Además de todo lo demás, si está codificando con Visual Studio, en realidad es más trabajo que no para incluir un espacio de nombres; debe modificar el proyecto para darle un espacio de nombre predeterminado vacío.
No es necesario tener un espacio de nombre. Sin embargo, el desarrollador de estudio espera que uses un espacio de nombre. Por ejemplo, cuando se decide añadir una clase a un estudio desarrollador del proyecto:
- Crear un archivo para la clase
- Agregue el archivo al proyecto
- Crear una clase vacía (en el archivo anterior) que está en el espacio de nombre predeterminado del proyecto.
Un "espacio de nombres predeterminado del proyecto" es un concepto de estudio de desarrollador, no un concepto de C# y se establece en las propiedades del proyecto.
Como se va a crear un archivo DLL para que otros utilicen, será mucho más fácil para los usuarios de su DLL si usted tiene un espacio de nombres:
- Las personas esperan que usted tenga un espacio de nombres (por lo que puede confunde si no lo haces)
- Los espacios de nombres hacen que sea mucho más fácil para tus usuarios si tienes clase (o enum, etc.) que tiene el mismo nombre que otra clase en cualquier archivo DLL al que están vinculados.
Por lo tanto, no veo una buena razón para no usar un espacio de nombres.
No estoy seguro de si el "espacio de nombre predeterminado del proyecto" es realmente una función de solo estudio. Al leer recursos incrustados desde un dll, debe prefijar su ruta con el "espacio de nombres predeterminado del proyecto". Por lo tanto, es un concepto en .NET Framework también. Tal vez hay una buena razón para eso ... Y sí, este es un alto-jack :) –
Mi voto a favor de "sí" creo que es un buen hábito usar el espacio de nombres. no puedes estar seguro de que las personas no usen los mismos nombres de clase.
Para responder a su comentario sobre el nombramiento de una clase igual que su espacio de nombres, lea un poco del siguiente artículo.
Versión corta: no hagas eso.
Básicamente sistema es un espacio de nombres raíz en asp.net C#. En .net, cada programa se crea con un espacio de nombre predeterminado. Este espacio de nombre predeterminado se llama espacio de nombre global. Pero el programa en sí crea cualquier cantidad de espacio de nombres, cada uno con un nombre único.
aprender más http://asp-net-by-parijat.blogspot.in/2015/08/what-is-namespace-in-c-need-of.html
- 1. C++ Espacio de nombres pregunta
- 2. Básica C++ pregunta memoria
- 3. básica C# pregunta
- 4. pregunta básica sobre la sobrecarga de métodos
- 5. Pregunta básica sobre la inclusión del archivo de cabecera C++?
- 6. C# - Pregunta básica: ¿Qué es '?'?
- 7. Pregunta muy básica sobre Hadoop y archivos de entrada comprimidos
- 8. Pregunta sobre C# covarianza
- 9. Pregunta básica sobre la refactorización en una clase abstracta
- 10. java pregunta básica
- 11. Pregunta sobre la clase con funciones estáticas y espacio de nombres en PHP
- 12. Pregunta sobre C#, servidores, XML
- 13. Pregunta sobre const_cast en C++
- 14. Pregunta sobre C++ clase interna
- 15. pregunta sobre? y: en C++
- 16. "plantillas" un espacio de nombres
- 17. C++ Espacio de nombres dolores de cabeza
- 18. Pregunta de sintaxis básica para shared_ptr
- 19. MongoDB C#: Pregunta sobre la paginación
- 20. Pregunta básica al asignar valor a unordered_map
- 21. Pregunta sobre C# 4.0 genéricos de covarianza
- 22. Necesito ayuda sobre un algoritmo
- 23. ¿Es posible revertir alias un espacio de nombres C#?
- 24. C#: ¿Puedes dividir un espacio de nombres en varios archivos?
- 25. ¿Qué necesito saber sobre C++ 0x?
- 26. Constante de espacio de nombres en C#
- 27. Pregunta básica de Java: igualdad de cadenas
- 28. Problema de espacio de nombres en C++
- 29. ¿Qué es un espacio de nombres?
- 30. Pregunta básica del estado de Scalaz
¿Usted realmente necesita un paquete cuando se hace tal cosa en Java? – Mchl
Sin embargo, usaría espacios de nombres de paquetes en Java, ¿verdad? –
ok ... así que aquí está el problema real que me llevó a esta pregunta. Traté de poner todas las clases en un espacio de nombres llamado 'A'. La clase principal también se llama 'A'. Con esto, las aplicaciones del cliente tienen que referirse a esta clase principal como A.A, que se ve incómodo. Esto no ocurre en Java porque en Java hay una clara distinción entre un nombre de paquete y un nombre de clase ... no hay lugar para la ambigüedad ... lo cual no parece ser el caso con C#. – Aadith