2. Jmenný prostor (namespace)

2.1. Co je to jmenný prostor (namespace)

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(...).

2.2. Užitečné jmenné prostory

  • 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.

2.3. Tvorba jmenného prostoru

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:

[ukázka kódu]
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.

[ukázka kódu]
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ř.:

[ukázka kódu]
namespace Outer {
   namespace Inner { 
      public class InnerClass { 
         public InnerClass() { ... }
      }
   ...
}

class Test {
   public static void Main() { 
      Outer.Inner.InnerClass ic = new Outer.Inner.InnerClass();
   }
}