■ C# 10.0 での新機能
・グローバルな using ディレクティブ (Global using directive)
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/globalusingdirective
どこかの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 ファイルで DisableImplicitNamespaceImports プロパティを設定すると回避できます(暗黙的な global using を無効化できます)。
.csproj で暗黙的な global using を足したり除外したりできます。
global using System.Text; 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> <DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports> </PropertyGroup> </Project>
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> </PropertyGroup> <ItemGroup> <Import Remove="System" /> <Import Include="Test" /> </ItemGroup> </Project>