Paweł Łukasiewicz
2015-03-23
Paweł Łukasiewicz
2015-03-23
Udostępnij Udostępnij Kontakt
Przestrzenie nazw zostały przygotowane, aby utrzymać odrębność jednych nazw od drugich. Nazwa klasy zdeklarowana w jednej przestrzeni nazw nie koliduje z taką samą nazwą klasy w innej przetrzeni nazw.

Deklarowanie przestrzeni nazw

Definicja ta rozpoczyna się od słowa kluczowego namespace po której występują nazwa przestrzeni nazw:
namespace nazwa_przestrzeni_nazw
{
    blok_kodu_do_wykonania;
}
Aby wywołać metodę, zmienną z danej przestrzeni nazw należy posłużyć się poniższym schematem:
nazwa_przestrzeni_nazw.nazwa_zmiennej;
Użycie przestrzeni nazw jest przedstawione szerzej na poniższym przykładzie:
using System;
namespace PrzestrzenieNazw
{
    class Program
    {
        static void Main(string[] args)
        {
            pierwsza_przestrzen_nazw.namespace_1 p1 = new pierwsza_przestrzen_nazw.namespace_1();
            druga_przestrzen_nazw.namespace_2 p2 = new druga_przestrzen_nazw.namespace_2();
            p1.metoda();
            p2.metoda();
            Console.ReadKey();
            // Wynik działania programu
            //Wewnatrz pierwszej przestrzeni nazw
            //Wewnatrz drugiej przestrzeni nazw
        }
    }
}
namespace pierwsza_przestrzen_nazw
{
    class namespace_1
    {
        public void metoda()
        {
            Console.WriteLine("Wewnątrz pierwszej przestrzeni nazw");
        }
    }
}
namespace druga_przestrzen_nazw
{
    class namespace_2
    {
        public void metoda()
        {
            Console.WriteLine("Wewnątrz drugiej przestrzeni nazw");
        }
    }
}

Słowo kluczowe using

Słowo kluczowe using pozwala nam na dodanie danej przestrzeni nazw do naszego programu. Ciągle w naszych programach używamy przestrzeni nazw System. Klasa Console jest zdefiniowana właśnie w tej przesteni nazw. My jedynie piszemy:
Console.WriteLine("Witaj!");
Równie dobrze moglibyśmy skorzystać z pełnej nazwy:
System.Console.WriteLine("Witaj!");
Warto zatem korzystać z dodawnia przestrzeni nazw w naszym programie. Wówczas nasze wywołania będą zdecydowanie krótsze a kod czytelniejszy. Przepiszmy kod napisany wcześniej wykorzystując do tego słowo kluczowe using:
using druga_przestrzen_nazw;
using pierwsza_przestrzen_nazw;
using System;
namespace PrzestrzenieNazw
{
    class Program
    {
        static void Main(string[] args)
        {
            namespace_1 p1 = new namespace_1();
            namespace_2 p2 = new namespace_2();
            p1.metoda();
            p2.metoda();
            Console.ReadKey();
            // Wynik działania programu
            //Wewnatrz pierwszej przestrzeni nazw
            //Wewnatrz drugiej przestrzeni nazw
        }
    }
}
namespace pierwsza_przestrzen_nazw
{
    class namespace_1
    {
        public void metoda()
        {
            Console.WriteLine("Wewnątrz pierwszej przestrzeni nazw");
        }
    }
}
namespace druga_przestrzen_nazw
{
    class namespace_2
    {
        public void metoda()
        {
            Console.WriteLine("Wewnątrz drugiej przestrzeni nazw");
        }
    }
}

Zagnieżdzone przestrzenie nazw

Jedna przestrzeń nazw możemy być zdefiniowana wewnątrz innej przestrzeni nazw:
namespace pierwsza_przestrzen_nazw
{
	blok_kodu_do_wykonania;
    namespace druga_przestrzen_nazw
    {
    	    blok_kodu_do_wykonania;
    }
}
Składowe zagnieżdzonej przestrzeni nazw są dostępne po użyciu operatora (.).
using pierwsza_przestrzen_nazw;
using pierwsza_przestrzen_nazw.druga_przestrzen_nazw;
using System;
namespace PrzestrzenieNazw
{
    class Program
    {
        static void Main(string[] args)
        {
            namespace_1 p1 = new namespace_1();
            namespace_2 p2 = new namespace_2();
            p1.metoda();
            p2.metoda();
            Console.ReadKey();
            // Wynik działania programu
            //Wewnatrz pierwszej przestrzeni nazw
            //Wewnatrz drugiej przestrzeni nazw
        }
    }
}
namespace pierwsza_przestrzen_nazw
{
    class namespace_1
    {
        public void metoda()
        {
            Console.WriteLine("Wewnątrz pierwszej przestrzeni nazw");
        }
    }
    namespace druga_przestrzen_nazw
    {
        class namespace_2
        {
            public void metoda()
            {
                Console.WriteLine("Wewnątrz drugiej przestrzeni nazw");
            }
        }
    }
}