2010-09-20 12 views
21

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?

+3

¿Usted realmente necesita un paquete cuando se hace tal cosa en Java? – Mchl

+2

Sin embargo, usaría espacios de nombres de paquetes en Java, ¿verdad? –

+0

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

Respuesta

14

¿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::.

+2

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

10

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.

0

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.

+0

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 :) –

0

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.

0

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