Jmenné prostory slouží k tomu, aby logicky sdružovaly typy (jednoduché - např.: int, strukturované - např.: třídy), které spolu souvisejí. Mohou sdružovat i podřízené jmenné prostory.
Pokud chceme oznámit, který jmenný prostor chceme používat, jednoduše to provedeme pomocí klíčového slova using . Následuje jmenný prostor, který chceme používat.
Pokud například budeme chtít používat jmenný prostor System, nebudeme muset pro výpis na konsoli již psát System.Console.WriteLine(...), ale postačí pouze Console.WriteLine(...).
Jmenný prostor System obsahuje mimo jiné tyto užitečné typy
Array - umožňuje práci s poli
Console - práce s konzolí
Math - třída pro matematické funkce a operace
Random - generování náhodných čísel
String - práce s řetězci
DateTime - struktura pro práci s datem a časem
System.Collections obsahuje třídy kolekcí a rozhraní pracující s kolekcemi. Podrobněji bude System.Collection probrána ve cvičení 5.
System.IO obsahuje třídy pro souborové operace
System.Data obsahuje třídy pro vytváření architektury datového přístupu ADO.NET
System.Net používá síťové operace (služby pro přístup k Internetu apod)
System.Xml slouží pro práci s XML daty
System.Threading pro práci s vlákny
System.Security obsahuje třídy zajišťující bezpečnost. Obsahuje jmenný prostor Cryptography (kódování), systémy pro zjištění totožnosti uživatele apod.
Jak bylo napsáno dříve, existující jmenné prostory používáme pomocí klíčového slova using. Např. chceme využívat typy jmenného prostoru System:
using System; |
Tato konstrukce nám umožní, abychom nemuseli třeba při výpisu na konsoli používat příkaz System.Console.WriteLine(...), ale vystačíme si pouze s Console.WriteLine(...)
Nyní si ukážeme, jak lze vytvářet vlastní jmenné prostory. Nový jmenný prostor vytvoříme použitím klíčového slova namespace.
namespace MyNamespace { class MyClass { public MyClass() { ... } } } class Test { public static void Main() { MyNamespace.MyClass mc = new MyNamespace.MyClass(); } } |
V příkladu jsme si vytvořili jmenný prostor MyNamespace, ve kterém jsme implementovali třídu MyClass. přístup ke třídě MyClass lze poté provést buď s použitím názvu jmenného prostoru + názvu třídy nebo pomocí using MyNamespace;.
V C# lze vytvářet i vnořené jmenné prostory. Přístup do takového jmenného prostoru se poté provede použitím jména vnějšího (vnějších) a poté námi požadovaného (vnitřního). Např.:
namespace Outer { namespace Inner { public class InnerClass { public InnerClass() { ... } } ... } class Test { public static void Main() { Outer.Inner.InnerClass ic = new Outer.Inner.InnerClass(); } } |