カテゴリ: C# 更新日: 2025/06/30

C#のスコープまとめ!変数の有効範囲とライフサイクルをわかりやすく解説

C#のスコープまとめ!変数の有効範囲とライフサイクルをわかりやすく解説
C#のスコープまとめ!変数の有効範囲とライフサイクルをわかりやすく解説

先生と生徒の会話形式で理解しよう

生徒

「C#で変数を使うときに、どこまで使えるかって決まってるんですか?」

先生

「はい、それはスコープ(変数の有効範囲)と呼ばれる仕組みで決まっています。」

生徒

「スコープって、具体的にどういうことですか?」

先生

「それでは、C#におけるスコープの基本を見ながら、わかりやすく説明していきましょう!」

1. スコープとは?

1. スコープとは?
1. スコープとは?

スコープとは、ある変数や関数が使える「範囲」のことを指します。たとえば、「家の中ではテレビのリモコンが使えるけど、外では使えない」というようなイメージです。プログラミングにおいても、変数が使える場所は決まっていて、スコープの外ではその変数にアクセスできません。

2. C#のスコープの種類

2. C#のスコープの種類
2. C#のスコープの種類

C#では、主に次の4つのスコープがよく使われます。

  • ローカルスコープ:メソッドの中で使う変数のスコープ
  • ブロックスコープ:if文やfor文などの中だけで使えるスコープ
  • メンバースコープ:クラス内で使う変数(フィールド)のスコープ
  • 名前空間スコープ:名前空間全体でアクセス可能なクラスなど

それぞれのスコープを簡単なコードで見ていきましょう。

3. ローカルスコープの例

3. ローカルスコープの例
3. ローカルスコープの例

メソッドの中で定義した変数は、そのメソッドの外からは使えません。これがローカルスコープです。


void Greet()
{
    string message = "こんにちは!";
    Console.WriteLine(message);
}

こんにちは!

messageという変数は、Greet()メソッドの中でしか使えません。

4. ブロックスコープの例

4. ブロックスコープの例
4. ブロックスコープの例

if文やfor文などの中で定義した変数は、そのブロック(中カッコ { })の外では使えません。


if (true)
{
    int number = 10;
    Console.WriteLine(number);
}
// ここでnumberを使おうとするとエラーになります

10

numberという変数は、if文の中だけで有効なスコープです。

5. メンバースコープの例

5. メンバースコープの例
5. メンバースコープの例

クラスの中で宣言された変数(フィールド)は、そのクラス内であればどこでも使えます。


class Person
{
    string name = "たろう";

    void SayName()
    {
        Console.WriteLine(name);
    }
}

たろう

nameという変数はPersonクラスの中であれば、SayName()メソッドの中でも使えます。

6. スコープと変数のライフサイクル

6. スコープと変数のライフサイクル
6. スコープと変数のライフサイクル

ライフサイクルとは、「変数がいつ作られて、いつ消えるのか」という生存期間のことです。スコープが終わると、変数は自動的に消えて使えなくなります。

  • ローカル変数:メソッドやブロックが終了すると自動的に消える
  • フィールド:オブジェクトが存在する限り使える

つまり、スコープ=使える範囲、ライフサイクル=使える時間と考えると、わかりやすいです。

7. 同じ名前の変数に注意

7. 同じ名前の変数に注意
7. 同じ名前の変数に注意

スコープによって、同じ名前の変数を使えることもありますが、意図しない上書きが起きることがあります。


int x = 5;

if (true)
{
    int x = 10; // エラー:xはすでに定義されています
    Console.WriteLine(x);
}

外側で定義された変数と同じ名前をブロック内で使うと、エラーになります。変数名はスコープごとに意識して使いましょう。

8. 実際に手を動かしてスコープを確認しよう

8. 実際に手を動かしてスコープを確認しよう
8. 実際に手を動かしてスコープを確認しよう

Visual Studio やオンラインの C# 実行環境(.NET Fiddle など)で、上記のコード例を実際に試してみましょう。「ここでは使えるけど、ここでは使えない」という感覚を、自分の手で確かめることが、理解への近道です。

カテゴリの一覧へ
新着記事
COBOLの変数名の付け方を解説!初心者でもわかる命名規則とコツ
C#のbreakとcontinueの使い方!ループ制御の基本テクニック
COBOLのFILLERの使い方とは?未使用領域を上手に管理する基本テクニック
C#のforeach文の基本!配列やコレクションを簡単に繰り返し処理する方法
人気記事
No.1
Java&Spring記事人気No1
C#のwhile文の使い方!条件付きループを基礎から学ぼう
No.2
Java&Spring記事人気No2
COBOLのDISPLAY文の使い方を完全ガイド!初心者でもわかる出力方法
No.3
Java&Spring記事人気No3
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.4
Java&Spring記事人気No4
COBOLのINDEXED BY句を使ったインデックス管理の基本をやさしく解説!