スポンサーリンク

C# の using ディレクティブと using ステートメントの違いを解説

C# には using というキーワードがありますが、文脈によって意味が大きく異なります。本記事では、混同しやすい using ディレクティブと using ステートメントの違いについてわかりやすく解説します。

using ディレクティブとは?

using ディレクティブは、名前空間や型を省略して記述できるようにするための構文です。主にファイルの先頭に記述されます。

例:

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Hello World");
    }
}

このように System.Console.WriteLineConsole.WriteLine と省略できるようになります。

補足

  • C# 10 からはファイルスコープの using ディレクティブも導入され、global using のような機能もあります。

using ステートメントとは?

using ステートメントは、IDisposable インターフェイスを実装したオブジェクトのリソースを自動的に解放するために使用します。

例:

using (var reader = new StreamReader("sample.txt"))
{
    string content = reader.ReadToEnd();
    Console.WriteLine(content);
}

このように using ブロックを抜けた時点で Dispose() が自動で呼ばれ、リソースリークを防ぐことができます。

C# 8以降の簡略記法:

using var reader = new StreamReader("sample.txt");
string content = reader.ReadToEnd();
Console.WriteLine(content);

ブロックを省略でき、より読みやすくなりました。

違いをまとめると

用途using ディレクティブusing ステートメント
目的名前空間の省略リソースの自動解放
使用位置ファイル先頭メソッド内など任意の場所
関連対象名前空間・型IDisposable を実装した型
処理の影響コードの可読性向上メモリリーク防止・安全なリソース管理

まとめ

using は C# において 2 つのまったく異なる意味を持つ重要なキーワードです。名前空間のインポートと、リソースの自動解放。この違いをしっかり理解しておくことで、より安全で読みやすいコードを書くことができます。

もし using の使い方に迷ったら、どちらの文脈かを見極めて正しく使い分けるようにしましょう。

.NET
スポンサーリンク
シェアする
trelab