・グローバルな using ディレクティブ (Global using directive)
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-directive#global-modifier
どこかの1ファイルで using するだけですべてのファイルで using したことにできる機能。
デフォルトで System
System.Collections.Generic
System.IO
System.Linq
System.Net.Http
System.Threading
System.Threading.Tasks
System.Net.Http.Json
などが暗黙に using されたことになっている。
暗黙の global using を無効にするには .csproj ファイルで ImplicitUsings プロパティを false に設定すると回避できる (暗黙的な global using を無効化できる)。
また .csproj の設定で暗黙的な global using がされる namespace を足したり除外したりでる。
global using System.Text; // グローバルな using ディレクティブを宣言 internal class Class1 { void Method() => Console.WriteLine(new StringBuilder()); }
// using System.Text; していなくとも System.Text.StringBuilder が使えている internal class Class2 { void Method() => Console.WriteLine(new StringBuilder()); }
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>true</ImplicitUsings> </PropertyGroup> </Project>
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> </PropertyGroup> <ItemGroup> <Using Remove="System" /> <!-- System 名前空間を暗黙から除外 --> <Using Include="System.Text" /> <!-- System.Text 名前空間を暗黙に追加 --> </ItemGroup> </Project>