Полное руководство по языку программирования С# 14 и платформе .NET 10 / Классы, структуры и пространства имен

Глобальные пространства имен

Начальный ⏱ 2 мин чтения 👁 2 🕓 обновлено 11.08.2026

Если мы хотим использовать какое-нибудь пространство имен в файлах кода в проекте, то по умолчанию нам надо его подключать во все файлы, где мы планируем его использовать.

Например, пусть у нас в проекте есть три файла с кодом:

В файле Base.cs определяется класс Company в пространстве Base:


namespace Base;
class Company
{
    string title;
    public Company(string title) => this.title = title;
    public void Print() => Console.WriteLine($"Компания: {title}");
}

В файле Person.cs определен класс Person, который использует класс Company:


using Base;

class Person
{
    string name;
    Company company;
    public Person(string name, Company company)
    {
        this.name = name;
        this.company = company;
    }
    public void Print()
    {
        Console.WriteLine($"Имя: {name}");
        company.Print();
    }
}

Чтобы использовать класс Company мы подключаем его пространство имен: using Base;

В классе Program.cs используются классы Person и Company:


using Base;

Company microsoft = new("Microsoft");
Person tom = new("Tom", microsoft);
tom.Print();

Опять же чтобы использовать класс Company, подключается его пространство имен: using Base;

И таких файлов, где надо подключать пространство Base (или какое-то другое) может быть множество. Это не очень удобно. И в .NET 6 для этого предложена концепция глобальных пространств имен, который подключаются один раз но сразу во все файлы кода в проекте. Для этого нам достаточно в одном файле прописать директиву:

global using подключаемое_пространство_имен;

Например, изменим файл Program.cs следующим образом:


global using Base;

Company microsoft = new("Microsoft");
Person tom = new("Tom", microsoft);
tom.Print();

Теперь пространство Base подключается во все файлы кода в проекте. И из файла Person.cs мы можем убрать строку

using Base;

Определение глобальных пространств в отдельном файле

Однако вышеуказанный подход опять же может быть не очень удобным, поскольку проще определить глобальные пространство имен, которые подключаются во весь проект где-то в одном месте. И для этого в Visual Studio 2022 мы можем добавить в проект новый файл с кодом C# и в нем определить набор подключаемых пространств имен. Например, добавим в проект файл, который назовем GlobalUsings.cs и в котором определим следующее содержимое:


global using System.Text;
global using System.Reflection;
global using Base;

И этот набор пространств имен будет автоматически подключаться во все файлы кода в проекте.

Проверь себя

📋 Тест по теме «Глобальные пространства имен» Тест по теме

Практические задания

Лёгкое Ручная проверка Заполните пропуск в коде (1)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

namespace _____;
class Company
{
    string title;
    public Company(string title) => this.title = title;
    public void Print() => Console.WriteLine($"Компания: {title}");
}
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (2)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

using Base;

class _____
{
    string name;
    Company company;
    public Person(string name, Company company)
    {
        this.name = name;
        this.company = company;
    }
    public void Print()
    {
        Console.WriteLine($"Имя: {name}");
        company.Print();
    }
}
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (3)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

using Base;

Company _____ = new("Microsoft");
Person tom = new("Tom", microsoft);
tom.Print();
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (4)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

_____ using подключаемое_пространство_имен;
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (5)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

global using Base;

Company microsoft = _____("Microsoft");
Person tom = new("Tom", microsoft);
tom.Print();
Войдите, чтобы отправить решение
Среднее Ручная проверка Восстановите код по памяти (1)
+20 XP

В этом фрагменте кода урока пропущены два ключевых элемента. Впишите оба пропущенных значения через запятую в порядке появления (например: x, 5).

namespace Base;
class Company
{
    string _____;
    public Company(string _____) => this.title = title;
    public void Print() => Console.WriteLine($"Компания: {title}");
}
Войдите, чтобы отправить решение
Среднее Ручная проверка Восстановите код по памяти (2)
+20 XP

В этом фрагменте кода урока пропущены два ключевых элемента. Впишите оба пропущенных значения через запятую в порядке появления (например: x, 5).

using Base;

class Person
{
    string name;
    _____ company;
    public Person(string name, Company company)
    {
        this.name = name;
        this.company = company;
    }
    public void Print()
    {
        _____.WriteLine($"Имя: {name}");
        company.Print();
    }
}
Войдите, чтобы отправить решение
Среднее Ручная проверка Расставьте строки кода в правильном порядке
+20 XP

Строки кода из примера этого урока перемешаны. Впишите их в правильном порядке, каждую строку — с новой строки.

class Company
    public void Print() => Console.WriteLine($"Компания: {title}");
namespace Base;
{
    string title;
}
    public Company(string title) => this.title = title;
Войдите, чтобы отправить решение
Сложное Ручная проверка Объясните и модифицируйте пример из урока «Глобальные пространства имен»
+30 XP

Опишите своими словами, что делает приведённый пример кода из урока «Глобальные пространства имен», и предложите одно осмысленное изменение (например, другое входное значение или дополнительное условие). Приведите итоговый код.

namespace Base;
class Company
{
    string title;
    public Company(string title) => this.title = title;
    public void Print() => Console.WriteLine($"Компания: {title}");
}
Войдите, чтобы отправить решение
Сложное Ручная проверка Найдите потенциальную проблему в коде урока «Глобальные пространства имен»
+30 XP

Изучите приведённый фрагмент кода и опишите, при каких входных данных или условиях он может сработать не так, как ожидается (граничный случай, отсутствие проверки и т.п.). Предложите исправленный вариант.

using Base;

class Person
{
    string name;
    Company company;
    public Person(string name, Company company)
    {
        this.name = name;
        this.company = company;
    }
    public void Print()
    {
        Console.WriteLine($"Имя: {name}");
        company.Print();
    }
}
Войдите, чтобы отправить решение
Мини-проект Ручная проверка Мини-проект по теме «Глобальные пространства имен»
+50 XP

Соберите небольшую программу, которая последовательно демонстрирует ключевые идеи урока. Программа должна быть рабочей и содержать минимум два самостоятельно написанных фрагмента, а не просто копию примера из урока.

Войдите, чтобы отправить решение
Домашнее задание Ручная проверка Домашнее задание по теме «Глобальные пространства имен»
+25 XP

Напишите собственную небольшую программу, применяющую материал темы «Глобальные пространства имен». Используйте не менее одной конструкции, показанной в примерах урока. Прикрепите код решения и краткое описание того, что он делает.

Войдите, чтобы отправить решение

Обсуждение (0)

Войдите, чтобы оставить комментарий.