rksoftware

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

global using

これまで暗黙的な global using 関連の記事を何個か書いてきましたが、実は global using は書いていませんでした。

■ global using

どこかの1ファイルで using だけですべてのファイルで using したことになる機能です。

■ 前提条件

今回のコードを試すには .NET 6 環境と 暗黙的な global using の無効化が必要です。

■ 例

次のコードは Class2 のファイルでは System 名前空間が using されていないのでエラーになります。

f:id:rksoftware:20210920235403j:plain

using System;

namespace TestApp
{
    internal class Class1
    {
        void Method()
            => Console.WriteLine("");
    }
}

namespace TestApp
{
    internal class Class2
    {
        void Method()
            => Console.WriteLine("");
    }
}

エラーメッセージ

英語版

Error    CS0103  The name 'Console' does not exist in the current context

日本語版

エラー    CS0103  現在のコンテキストに 'Console' という名前は存在しません

■ global using

Class1usingglobal というキーワードをつけてます。

f:id:rksoftware:20210920235420j:plain

global using System;

namespace TestApp
{
    internal class Class1
    {
        void Method()
            => Console.WriteLine("");
    }
}

namespace TestApp
{
    internal class Class2
    {
        void Method()
            => Console.WriteLine("");
    }
}

エラーがなくなりました!
便利に使えば使えそうですが、プロジェクト内のほかのソースコードファイルに影響を及ぼす非常に強い機能です。不用意に使うと場合によっては別のファイルのソースコードを壊しかねない点は注意して活用してください。