C# には using
というキーワードがありますが、文脈によって意味が大きく異なります。本記事では、混同しやすい using
ディレクティブと using
ステートメントの違いについてわかりやすく解説します。
using ディレクティブとは?
using
ディレクティブは、名前空間や型を省略して記述できるようにするための構文です。主にファイルの先頭に記述されます。
例:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello World");
}
}
このように System.Console.WriteLine
を Console.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
の使い方に迷ったら、どちらの文脈かを見極めて正しく使い分けるようにしましょう。