Espacios de nombres en C#

Si te has preguntado alguna vez para qué sirven los espacios de nombres en C#, la respuesta es que son, por decirlo de algún modo, contenedores para elementos como clases, enumeraciones, entre otros.

Te explico lo anterior, supongamos que estamos desarrollando una aplicación de un videojuego, y se nos ocurre crear una clase llamada “Player”, la cual contendrá elementos como la cantidad de vidas del jugador, entre otros elementos. Aquí usaré una aplicación de consola para ejemplificar este proyecto.

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
    }
}

public class Player
{
    public int Vidas { get; set; }
}

Todo va de maravilla, pero nos atascamos un día, y decidimos comprar un día una biblioteca adicional, al cual llamaremos Addons, que contiene elementos ó clases que nos servirán para desatascar nuestro problema. Esto lo simularemos con una única clase para este ejemplo.

Sin embargo, nos enfrentamos a otro problema, y es que dentro de ese ensamblado, existe también una clase llamada Player, la cual contiene ciertas propiedades y métodos que sirven para otras cosas muy distintas a las que nosotros estamos haciendo:

class Player
{
}

¿Te fijaste en el problema? Dos clases con el mismo nombre, algo que definitivamente al compilador no le va a gustar nada.

Problema de espacios de nombres en C#
Problema de espacios de nombres en C#

¿Cómo utilizar los espacios de nombres en C#?

Anteriormente, los desarrolladores colocaban un prefijo antes del nombre de la clase, por ejemplo “SpaceInvadersGamePlayer”, ó “GraphicsLibrarySprite”, sin embargo, esto es poco escalable, ya que los nombres pueden volverse bastante grandes, lo que es improductivo al momento de estar escribiendo código.

La solución de este problema, son precisamente los espacios de nombres. Con ellos, podemos “agrupar” en un contexto diferente cada una de las clases, con lo que lograremos que las clases no sean confundidas, y con ello solucionar el problema.

Con ello entonces, podríamos definir las clases de nuestro juego así:

using System;

namespace Game
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }

    public class Player
    {
        public int Vidas { get; set; }
    }
}

Con lo que el error desaparece inmediatamente, no por ello, dejaremos sin colocar el espacio de nombres a la biblioteca adicional:

namespace Addons
{
    class Player
    {
    }
}

Supongamos que ahora, deseamos utilizar la clase Player del proyecto Addons, y escribimos lo siguiente:

Espacios de nombres en C#
Espacios de nombres en C#

Como puedes observar, se está haciendo un llamado a la clase “Player”, que pertenece al espacio de nombres “Game”, sin embargo, nosotros deseamos utilizar la clase “Player” que pertenece al espacio de nombres “Addons”.

Para resolver esto, haremos uso del nombre completo de la clase, lo cual quedaría:

        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Addons.Player player = new Addons.Player();
        }

Importando espacios de nombres en un proyecto

Si has creado un nuevo proyecto en Visual Studio, seguramente te has encontrado con un montón de líneas al inicio de cada archivo que inicia con:

using System;

Si quieres probar para qué sirven estas líneas, elimínalas, y fíjate el montón de errores que salgan inmediatamente.

Errores por espacios de nombres
Errores por espacios de nombres

Este problema podrías solucionarlo, colocando su “nombre completo” de la clase, es decir, “nombre del espacio de nombres + nombre de la clase”, por lo que si escribo:

System.Console.WriteLine("Hello World!");

El problema desaparece inmediatamente. Sin embargo, imagina estar escribiendo cada una de las clases así, seguro que perderíamos mucho tiempo.

Es por ello, que utilizando la palabra “using”, indicamos que queremos utilizar un espacio de nombres diferente del cua nos encontramos, con lo que podremos utilizar las clases que se encuentren en dicho espacio de nombres, sin necesidad de estar escribiendo el nombre del espacio de nombres antes del nombre de la clase.

Notas sobre los espacios de nombres en C#

Es una práctica recomendada siempre hacer uso de espacios de nombres, por lo que Visual Studio siempre nos creará los elementos agrupados en el espacio de nombres del proyecto en el cual estemos trabajando.

No existe límite de espacios de nombres para nuestras aplicaciones, por ejemplo, podríamos tener un espacio de nombres como: “Northwind.UI.Views.Layouts”.

Un using, te permite “importar” las clases al contexto en el cual te encuentres, con lo que te liberas de estar escribiendo toda la definición del nombre completo de una clase (espacio de nombres + clase).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

0
    0
    Your Cart
    Your cart is emptyReturn to Shop