Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Ключевое слово
Используйте ключевое 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. Дополнительные сведения об объявлениях пространств имен с областью действия файла см. в спецификации функций.