В чем разница между namespace и библиотекой в C#?

«В чем разница между namespace и библиотекой в C#?» — вопрос из категории C# Core, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Namespace — это логический контейнер для организации типов (классов, интерфейсов, структур) и предотвращения конфликтов имен. Библиотека (сборка, .dll или .exe) — это физический файл со скомпилированным кодом, который может содержать множество пространств имен.

Пример namespace:

namespace MyApp.DataAccess {
    public class UserRepository { }
}

Пример использования библиотеки:

  • Добавление ссылки на сборку в проект.
  • Установка NuGet-пакета (например, Newtonsoft.Json).
Ключевые отличия: Аспект Namespace Библиотека
Природа Логическая группировка Физический файл (сборка)
Содержимое Типы (классы, интерфейсы) Скомпилированный код, метаданные, манифест
Использование Директива using для импорта типов Подключение к проекту как зависимость
Масштаб Может охватывать несколько сборок Может содержать множество namespace

Практическое правило: namespace организует код внутри вашего решения, а библиотека — это готовый компонент для повторного использования, который вы подключаете извне.