Použití jmenného prostoru (Příručka programování C#)
Obory názvů jsou silně používá v rámci programů C# dvěma způsoby.Za prvé.NET Framework třídy slouží k uspořádání jeho mnoho tříd oborů názvů.Jednak deklarování vlastní jmenné prostory umožňují omezit názvy oboru, třídy a metody ve větších projektů programování.
Přístup k oboru názvů
Většina aplikací C# začínají část using směrnic.Tato část obsahuje seznam oborů názvů, že aplikace bude často pomocí a ukládá programátor z určení při každém použití metody, která je součástí plně kvalifikovaný název.
Například zahrnutím řádku:
using System;
Při spuštění programu můžete použít programátor kód:
Console.WriteLine("Hello, World!");
Namísto:
System.Console.WriteLine("Hello, World!");
Obor názvů aliasů
použití směrnice (C#-Reference) Lze také vytvořit pro alias oboru názvů.Například pokud používáte již napsané obor názvů obsahující vnořené obory názvů, můžete deklarovat alias poskytnout zjednodušený způsob odkazování jeden, jako v následujícím příkladu:
using Co = Company.Proj.Nested; // define an alias to represent a namespace
Použití jmenného prostoru řízení oboru
namespace Deklarovat obor se používá klíčové slovo.Schopnost vytvářet obory v rámci projektu pomůže uspořádat kód a umožňuje vytvořit typy globálně jedinečný.V následujícím příkladu třídu s názvem SampleClass je definován v dvěma obory názvů, jeden vnořený v druhé.. Operátor (C#-Reference) Slouží k rozlišení, která metoda volána.
namespace SampleNamespace
{
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine(
"SampleMethod inside SampleNamespace");
}
}
// Create a nested namespace, and define another class.
namespace NestedNamespace
{
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine(
"SampleMethod inside NestedNamespace");
}
}
}
class Program
{
static void Main(string[] args)
{
// Displays "SampleMethod inside SampleNamespace."
SampleClass outer = new SampleClass();
outer.SampleMethod();
// Displays "SampleMethod inside SampleNamespace."
SampleNamespace.SampleClass outer2 = new SampleNamespace.SampleClass();
outer2.SampleMethod();
// Displays "SampleMethod inside NestedNamespace."
NestedNamespace.SampleClass inner = new NestedNamespace.SampleClass();
inner.SampleMethod();
}
}
}
Plně kvalifikované názvy
Obory názvů a typů mají jedinečné názvy popsaná plně kvalifikované názvy, které označují logické hierarchie.Například příkaz A.B vyplývá, že A je název typu nebo oboru názvů a B je vnořená uvnitř.
V následujícím příkladu jsou vnořené třídy a obory názvů.Plně kvalifikovaný název je označen jako komentář po každé entity.
namespace N1 // N1
{
class C1 // N1.C1
{
class C2 // N1.C1.C2
{
}
}
namespace N2 // N1.N2
{
class C2 // N1.N2.C2
{
}
}
}
Předchozí kód segmentu:
Obor názvů N1 je členem globální obor názvů.Jeho plně kvalifikovaný název je N1.
Obor názvů N2 je členem N1.Jeho plně kvalifikovaný název je N1.N2.
Třída C1 je členem N1.Jeho plně kvalifikovaný název je N1.C1.
Název třídy C2 v tomto kódu je použit dvakrát.Plně kvalifikované názvy jsou však jedinečný.První výskyt C2 je deklarována uvnitř C1; Proto je jeho plně kvalifikovaný název: N1.C1.C2.Druhý výskyt C2 je deklarována v rámci oboru názvů N2; Proto je jeho plně kvalifikovaný název N1.N2.C2.
Pomocí předchozího kódu segmentu, můžete přidat nový člen třídy C3, k oboru názvů N1.N2 takto:
namespace N1.N2
{
class C3 // N1.N2.C3
{
}
}
Používejte :: odkazuje alias oboru názvů nebo global:: odkaz globální obor názvů a . vymezující typy nebo členy.
Jedná se o chybu pomocí :: s aliasem, která odkazuje na typ namísto oboru názvů.Příklad:
using Alias = System.Console;
class TestClass
{
static void Main()
{
// Error
//Alias::WriteLine("Hi");
// OK
Alias.WriteLine("Hi");
}
}
Pamatujte, že slovo global není předdefinované alias; proto global.X nemá žádné zvláštní význam.Získá zvláštní význam pouze v případě, že se používá s ::.
Kompilátoru upozornění CS0440 je generována při definování aliasu s názvem globální protože global:: vždy odkazuje na globální obor názvů, nikoli na alias.Například generuje následující upozornění:
using global = System.Collections; // Warning
Pomocí :: s aliasy je vhodné a chrání proti zavlečení neočekávané další typy.Zvažte například tento příklad:
using Alias = System;
namespace Library
{
public class C : Alias.Exception { }
}
Toto funguje, ale pokud typ s názvem Alias byly následně zavedena, Alias. by místo toho vazbu typu.Pomocí Alias::Exception pojistitelům, Alias je považován za alias oboru názvů a nebudou omylem považovány za typu.
Naleznete v tématu Jak: použití globální obor názvů aliasu (C# Příručka programování) Další informace týkající global alias.
Viz také
Referenční dokumentace
Obory názvů (Příručka programování C#)
Klíčová slova oboru názvů (C#-Reference)