rksoftware

Visual Studio とか C# とかが好きです

暗黙的な global using ディレクティブによる破壊的変更

暗黙的な global using ディレクティブについては次を参照してください、

■ System 名前空間に注目して検証

次のコードは .NET 5 ではまったく問題なくビルドできるコードです。
3 行目の ConsoleTest 名前空間のクラスとして認識されています。

using Test;

Console.WriteLine("");

namespace Test
{
    static class Console
    {
        public static void WriteLine(string value) {; }
    }
}

これを .NET 6 にしてしまうと...

参考 - .NET 6 への変更方法

エラーになります。 f:id:rksoftware:20210912024225j:plain

Error    CS0104  'Console' is an ambiguous reference between 'Test.Console' and 'System.Console'

日本語だと

エラー    CS0104  'Console' は、'Test.Console' と 'System.Console' 間のあいまいな参照です

暗黙で using System; がついてしまうので、分からなくなってしまっていますね。

そうそう踏まないと思いますが、油断しているとレガシーコードを扱っている際に踏むかもしれません。備えましょう。