Espacios de nombres (Namespaces) en C#: Evitando conflictos de nombres
Un namespace (espacio de nombres) está diseñado para proporcionar una forma de mantener un conjunto de nombres separado de otro. Los nombres de clases declarados en un namespace no entran en conflicto con los mismos nombres declarados en otro.
Definición de un namespace
Una definición de namespace comienza con la palabra clave namespace seguida del nombre:
namespace nombre_namespace {
// declaraciones de código
}
Para llamar a la versión habilitada para namespace de una función o variable, anteponga el nombre del namespace:
nombre_namespace.nombre_elemento;
Ejemplo: Uso de namespaces
using System;
namespace primer_espacio {
class clase_namespace {
public void func() {
Console.WriteLine("Dentro de primer_espacio");
}
}
}
namespace segundo_espacio {
class clase_namespace {
public void func() {
Console.WriteLine("Dentro de segundo_espacio");
}
}
}
class ClasePrueba {
static void Main(string[] args) {
primer_espacio.clase_namespace fc = new primer_espacio.clase_namespace();
segundo_espacio.clase_namespace sc = new segundo_espacio.clase_namespace();
fc.func();
sc.func();
Console.ReadKey();
}
}
Resultado:
Dentro de primer_espacio
Dentro de segundo_espacio
La palabra clave using
La palabra clave using indica que el programa está usando los nombres en el namespace dado. Por ejemplo, usamos el namespace System en nuestros programas. La clase Console está definida allí. Solo escribimos:
Console.WriteLine("Hola");
Podríamos haber escrito el nombre completo:
System.Console.WriteLine("Hola");
También puede evitar anteponer namespaces con la directiva using. Esto indica al compilador que el código subsiguiente usa nombres en el namespace especificado.
Ejemplo con directiva using:
using System;
using primer_espacio;
using segundo_espacio;
namespace primer_espacio {
class abc {
public void func() {
Console.WriteLine("Dentro de primer_espacio");
}
}
}
namespace segundo_espacio {
class efg {
public void func() {
Console.WriteLine("Dentro de segundo_espacio");
}
}
}
class ClasePrueba {
static void Main(string[] args) {
abc fc = new abc();
efg sc = new efg();
fc.func();
sc.func();
Console.ReadKey();
}
}
Resultado:
Dentro de primer_espacio
Dentro de segundo_espacio
Namespaces anidados
Puede definir un namespace dentro de otro:
namespace nombre_namespace1 {
// declaraciones
namespace nombre_namespace2 {
// declaraciones
}
}
Acceda a miembros de namespace anidado usando el operador punto (.):
using System;
using primer_espacio;
using primer_espacio.segundo_espacio;
namespace primer_espacio {
class abc {
public void func() {
Console.WriteLine("Dentro de primer_espacio");
}
}
namespace segundo_espacio {
class efg {
public void func() {
Console.WriteLine("Dentro de segundo_espacio");
}
}
}
}
class ClasePrueba {
static void Main(string[] args) {
abc fc = new abc();
efg sc = new efg();
fc.func();
sc.func();
Console.ReadKey();
}
}
Resultado:
Dentro de primer_espacio
Dentro de segundo_espacio
Lenguaje C
- C# Hola Mundo – Construyendo su primera aplicación en C#
- Entendiendo palabras clave e identificadores en C#: Reglas, listas y mejores prácticas
- Domine variables y tipos de datos primitivos en C#: Guía completa
- Operadores en C# – Guía completa de operadores en C#
- Dominando operadores bit a bit y de desplazamiento en C#: Guía completa
- Fundamentos de C#: Entrada y salida esenciales
- Expresiones, sentencias y bloques en C#: Guía completa con ejemplos prácticos
- Dominando los comentarios en C#: Tipos, mejores prácticas y documentación XML
- Dominando la sentencia switch en C#: Sintaxis, ejemplos y mejores prácticas
- Operador ternario en C#: Guía concisa para expresiones condicionales
- Sentencia break en C#: Cómo y cuándo usarla