C#のusingとnamespaceとは?


C#でHello Worldしたときに、usingとかnamespaceって何?と思ったので書いておきます。
既にC#の環境がある方は最初の[準備]は飛ばしてください。

[準備]C#でHello Worldを表示する

まずは、C#の動作環境を整えます。
VS Codeと.NET Core SDKを使いました。
(環境のセットアップは https://qiita.com/555443/items/55bfe07b45477bfc6e3a を参照)

コンソールでdotnet new consoleを実行すると以下のコードが生成されました。

Program.cs
using System;
namespace Sample
{
   class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

そして、dotnet runを実行するとHello World!と無事に表示されました。

それぞれ何をしているのか

では、本題のusingとか、namespaceって何なのかを見ていきましょう。

namespace

C#のプログラムの構造は、外側からネームスペース、クラス、メソッド、変数…という形で構成されています。つまり、各クラスは一つのネームスペースに属していると言えます。また、今回のclass ProgramはnamespaceがSample内で定義されているということですね。ネームスペースを指定するというのは、他のネームスペースにある同じクラス名と混ざらないようにする仕組みなのです。
(以下の画像は @IT / 連載:C#入門 より引用)

using

上記でネームスペースの役割を述べました。では、usingの役割はというとそのプログラム内で用いるネームスペースを宣言することです。
プログラム内でConsole.WriteLine("Hello World!")を使って何気なくHello World!の出力が実現されていますが、プログラム内にConsoleクラスやWriteLineメソッドは宣言されていません。しかし、using System;によってSysteのネームスペースの利用を宣言することで、その中ではSystemのネームスペースに存在するクラスを利用することができるのです。


参考記事
Visual Studio Codeを使い、C#の開発環境を途中まで整える
第2回 ネームスペースとクラス