Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Ключевое слово
Используйте ключевое namespace слово для объявления области, содержащей набор связанных объектов. Используйте пространство имен для упорядочивания элементов кода и создания глобальных уникальных типов.
namespace SampleNamespace
{
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
namespace Nested
{
class SampleClass2 { }
}
}
Объявления пространств имен с областью действия файла позволяют объявить, что все типы в файле находятся в одном пространстве имен. Следующий пример аналогичен предыдущему примеру, но использует объявление пространства имен с областью действия файла:
using System;
namespace SampleFileScopedNamespace;
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.
Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.
Подсказка
Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.
Использование инструкций в пространствах имен с областью действия файла
При использовании пространств имен с областью действия файларазмещение инструкций using влияет на их область в файле. Пространства имен с областью действия файла ниже, чем эквивалентное традиционное объявление пространства имен, которое заканчивается закрывающей скобкой в конце файла. Это поведение определяет, где using применяются директивы следующим образом:
- Если вы помещаете
usingинструкции перед объявлением пространства имен с областью действия файла, они обрабатываются как вне пространства имен и интерпретируются как полные пространства имен. - Если вы помещаете
usingинструкции после объявления пространства имен с областью действия файла, они будут области в самом пространстве имен.
Например:
// 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...
}
В предыдущем примере System глобально доступен, а System.Text применяется только в SampleNamespace.
В предыдущем примере не было вложенного пространства имен. Пространства имен с областью действия файла не могут включать дополнительные объявления пространств имен. Нельзя объявить вложенное пространство имен или второе пространство имен с областью действия файла:
namespace SampleNamespace;
class AnotherSampleClass
{
public void AnotherSampleMethod()
{
System.Console.WriteLine(
"SampleMethod inside SampleNamespace");
}
}
namespace AnotherNamespace; // Not allowed!
namespace ANestedNamespace // Not allowed!
{
// declarations...
}
В пространстве имен можно объявить ноль или больше следующих типов:
- class
- interface
- struct
- enum
- delegate
- вложенные пространства имен можно объявлять везде, кроме объявлений пространств имен с областью действия файла
Компилятор добавляет пространство имен по умолчанию. Это безымянное пространство имен, иногда называемое глобальным пространством имен, существует в каждом файле. Он содержит объявления, не включенные в объявленное пространство имен. Любой идентификатор в глобальном пространстве имен доступен для использования в именованном пространстве имен.
Об этом не говорится прямо, но пространства имен имеют открытый доступ. Описание модификаторов доступа, которые можно назначить элементам в пространстве имен, см. в разделе Модификаторы доступа.
Пространство имен можно определить в двух или нескольких объявлениях. Например, в следующем примере два класса определяются в качестве части пространства имен MyCompany:
namespace MyCompany.Proj1
{
class MyClass
{
}
}
namespace MyCompany.Proj1
{
class MyClass1
{
}
}
В следующем примере показано, как можно вызвать статический метод вложенного пространства имен.
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
Спецификация языка C#
Дополнительные сведения см. в статье Пространства имен в разделе Предварительная спецификация C# 6.0. Дополнительные сведения об объявлениях пространств имен с областью действия файла см. в спецификации функций.