TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1196 1.43K
День девятьсот семьдесят четвёртый. #ЧтоНовенького
Глобальные Директивы Using в C #10
Размер поста в телеграмме ограничен, поэтому я часто пытаюсь сократить его, насколько это возможно. Больше всего проблем доставляют примеры кода. С одной стороны, хочется показать пример, который можно было бы скопировать и выполнить, и всё бы работало. С другой стороны, C# довольно многословен, в отличие от того же F# или чисто скриптовых языков, например. Поэтому приходится удалять из кода всё лишнее. Это касается в том числе директив using в начале файла. Часто они просто загромождают код и редко добавляют ему какую-то ценность.

В .NET 6 и C #10 появились глобальные директивы using. Теперь вы можете поместить все общие директивы using (в основном, System) в один файл, который будет автоматически доступен для использования в рамках всего проекта.

Помните, что эта функция доступна только в .NET 6. Кроме того, на данный момент вам может потребоваться отредактировать файл .csproj, чтобы разрешить функции в предварительном просмотре (см. LangVersion):
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>

Синтаксис для добавления глобальных директив using на самом деле довольно прост: добавьте ключевое слово global перед любым using в любом месте, чтобы сделать директиву глобальной.
global using System;

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

При этом некоторые используют файл GlobalUsings.cs в корне проекта, содержащий что-нибудь вроде:
global using System;
global using System.Collections.Generic;
global using System.IO;
global using System.Linq;

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

Публичное обсуждение функционала ведётся здесь: https://github.com/dotnet/csharplang/issues/3428

Источник: https://dotnetcoretutorials.com/2021/08/19/global-using-statements-in-c10/
More from @netdeveloperdiary
  1. Oct 17, 2026День 2817. #ЧтоНовенького #VS Прекращаем Сборку После Первой Ошибки Мэдс Кристенсен продол…
  2. Oct 16, 2026День 2816. #Карьера #AI Станет ли ИИ-Кодинг Концом Программирования для Людей? Автор ориги…
  3. Oct 15, 2026Post #3374
  4. Oct 14, 2026Post #3373
  5. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  6. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →