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:
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:
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");
}
}
}
}