Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Słowo kluczowe
Użyj słowa kluczowego namespace , aby zadeklarować zakres zawierający zestaw powiązanych obiektów. Użyj przestrzeni nazw, aby zorganizować elementy kodu i utworzyć globalnie unikatowe typy.
namespace SampleNamespace
{
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
namespace Nested
{
class SampleClass2 { }
}
}
Deklaracje przestrzeni nazw o zakresie plików umożliwiają zadeklarowanie, że wszystkie typy w pliku znajdują się w jednej przestrzeni nazw. Poniższy przykład jest podobny do poprzedniego przykładu, ale używa deklaracji przestrzeni nazw o zakresie pliku:
using System;
namespace SampleFileScopedNamespace;
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
Dokumentacja języka C# zawiera ostatnio wydaną wersję języka C#. Zawiera również początkową dokumentację dla funkcjonalności w publicznych wersjach testowych nadchodzącego wydania języka.
Dokumentacja identyfikuje dowolną funkcję po raz pierwszy wprowadzoną w ostatnich trzech wersjach języka lub w bieżącej publicznej wersji zapoznawczej.
Wskazówka
Aby dowiedzieć się, kiedy funkcja została po raz pierwszy wprowadzona w języku C#, zapoznaj się z artykułem dotyczącym historii wersji języka C#.
Używanie instrukcji w przestrzeniach nazw o zakresie plików
W przypadku korzystania z przestrzeni nazw o zakresie plików umieszczanie instrukcjiusing wpływa na ich zakres w pliku. Przestrzenie nazw o zakresie plików są niższe od równoważnej tradycyjnej deklaracji przestrzeni nazw, która kończy się nawiasem zamykającym na końcu pliku. To zachowanie określa, gdzie using dyrektywy są stosowane w następujący sposób:
- Jeśli umieścisz instrukcje
usingprzed deklaracją przestrzeni nazw o zakresie pliku, są traktowane jako poza przestrzenią nazw i są interpretowane jako w pełni kwalifikowane przestrzenie nazw. - Jeśli instrukcje zostaną
usingwprowadzone po deklaracji przestrzeni nazw o zakresie pliku, są one objęte zakresem w samej przestrzeni nazw.
Na przykład:
// This using is outside the namespace scope, so it applies globally
using System;
namespace SampleNamespace; // File-scoped namespace declaration
// This using is inside the namespace scope
using System.Text;
public class SampleClass
{
// Class members...
}
W poprzednim przykładzie System jest dostępny globalnie, ale System.Text ma zastosowanie tylko w obrębie SampleNamespace.
Powyższy przykład nie zawiera zagnieżdżonej przestrzeni nazw. Przestrzenie nazw o zakresie plików nie mogą zawierać większej liczby deklaracji przestrzeni nazw. Nie można zadeklarować zagnieżdżonej przestrzeni nazw ani drugiej przestrzeni nazw o zakresie plików:
namespace SampleNamespace;
class AnotherSampleClass
{
public void AnotherSampleMethod()
{
System.Console.WriteLine(
"SampleMethod inside SampleNamespace");
}
}
namespace AnotherNamespace; // Not allowed!
namespace ANestedNamespace // Not allowed!
{
// declarations...
}
W przestrzeni nazw można zadeklarować zero lub więcej z następujących typów:
- class
- interface
- struct
- enum
- delegate
- zagnieżdżone przestrzenie nazw można zadeklarować z wyjątkiem deklaracji przestrzeni nazw o zakresie pliku
Kompilator dodaje domyślną przestrzeń nazw. Ta nienazwana przestrzeń nazw, czasami nazywana globalną przestrzenią nazw, znajduje się w każdym pliku. Zawiera deklaracje nieuwzględniane w zadeklarowanej przestrzeni nazw. Dowolny identyfikator w globalnej przestrzeni nazw jest dostępny do użycia w nazwanej przestrzeni nazw.
Przestrzenie nazw niejawnie mają dostęp publiczny. Aby zapoznać się z omówieniem modyfikatorów dostępu, które można przypisać do elementów w przestrzeni nazw, zobacz Modyfikatory dostępu.
Można zdefiniować przestrzeń nazw w co najmniej dwóch deklaracjach. Na przykład w poniższym przykładzie zdefiniowano dwie klasy w ramach MyCompany przestrzeni nazw:
namespace MyCompany.Proj1
{
class MyClass
{
}
}
namespace MyCompany.Proj1
{
class MyClass1
{
}
}
W poniższym przykładzie pokazano, jak wywołać metodę statyczną w zagnieżdżonej przestrzeni nazw.
namespace SomeNameSpace
{
public class MyClass
{
static void Main()
{
Nested.NestedNameSpaceClass.SayHello();
}
}
// a nested namespace
namespace Nested
{
public class NestedNameSpaceClass
{
public static void SayHello()
{
Console.WriteLine("Hello");
}
}
}
}
// Output: Hello
specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz sekcję Przestrzenie nazw specyfikacji języka C#. Aby uzyskać więcej informacji na temat deklaracji przestrzeni nazw o zakresie plików, zobacz specyfikację funkcji.