【Aモデル録 フェーズ1 C#基礎】

07-01:using ( )

一言で言うと

👉 using とは、「使い終わった後の処理を、C#に任せる」という宣言です。

もっと正確に言うと、

👉「この参照は、ここまで使ったら必ず片付けてください」という“契約”を結ぶ構文

👉使わなくなったものの後始末を、プログラマーが書かなくて済むようにする構文

です。


まず、usingを学習する前に整理

現在地の確認をしておきます。

現在地はここ。


この次が、この講義回の説明内容。


混乱するのは正常です。
なぜなら――

using には「役割が違う2種類」がある

からです。

それでは、参りましょう。


using は「同じ単語・別の仕事」

種類①:今まで見てきた using

using System;

これは、

「このプログラムでは、System という名前空間を使います」

という 宣言 です。

👉 第6章までで見てきた using は、全部こっち。


種類②:今回の using(初登場)

using ( 〜 )
{
    〜
}

これは、

「この中でだけ、ある参照を使います」

という 文(命令) です。

👉 まったく別の役割。
同じ単語なのが紛らわしい。

※違いを視覚的に明確にするため、以降「using ( )」と表記します。


「どこに書くの?」問題(重要)

これは明確にしておきます。

class Program
{
    static void Main()
    {
        // ← ここに書く
        using ( ... )
        {
            // 使う処理
        }
    }
}

つまり、

👉 場所が違う = 役割が違う。


じゃあ、using ( ) は何をしている?

超シンプルに言います。

「この参照は、ここまで使ったら終わりです」
と C# に伝える仕組み

この 「終わったら」 を
自分で書かなくてよくするのが using ( )。


最低限の形だけ 例コード

形だけ見ます。

using (object something = new object())
{
    // ここで使う
}
// ← ここを出たら「もう使わない」

※ object は「変数の型」の一つです。
今は「型名がここに書かれる」ということだけ理解しておいてください。

今は、コードの意味ではなく、以下のポイントを押えてください。

参照との関係

参照の概念とつながります。
まだ、解説にはありませんでしたが、

null や try-catch とは役割が違う安全装置になります。


何が問題で、using ( ) が生まれたか

前述したとおり。

放置すると、

が解放されない

ここで出てくる問い:

「いつ、誰が、後始末するの?」


using ( ) がやっている“正体”

using ( ) は 魔法ではありません。

内部的には、こういう契約です。

「この型は IDisposable を実装している」
 ↓
「だから Dispose() という後始末メソッドを持っている」
 ↓
「using は、スコープを抜けた瞬間に
Dispose() を 必ず 呼ぶ」

例外が起きても、必ず。

今は、「だから何をやってるの?」と感じる契約内容。

でも、実はここが一番重要。

プログラマーの認識が、
「知らなくても使える魔法」と、「大事なことをしてくれる機能」とでは、ずいぶん変わります。


よくある誤解

❌ using は「メモリを解放する」
→ 違う

✅ using は
「管理対象外の資源(ファイル・通信など)を閉じる」

メモリの解放は、GC(ガベージコレクタ)の仕事。

「GC(ガベージコレクタ)」とは
プログラムが使用しなくなったメモリ領域(不要なオブジェクト)を自動的に検出し、解放(回収)する仕組みで、
「ごみ集め」を意味します


理解まとめ

これだけをおさえておいてください。


構成と読み方|タイトル一覧

Top - はじめに|この忘備録と「Aモデル」について