第36章 インスタンスフィールドとローカル変数


メソッド内で宣言された変数をローカル変数といいます。これは、第22章でちょっとだけ触れています。



ローカル変数は、そのメソッドが復帰した時点で無効となります。これに対して、インスタンスフィールドはオブジェクトが有効な限り値を保有し続けます。ローカル変数にstaticをつけることは許されていません。特にC/C++に慣れた人は注意が必要です。

次に、インスタンスフィールドとローカル変数の違いについて示す簡単なプログラムを示します。

// staticlocal01.cs

using System;

class MyClass
{
    int x = 0;

    public void show1()
    {
        int x = 0;
        x++; // ローカル変数の値を1増やす
        Console.WriteLine("Local x = {0}", x);
    }
    public void show2()
    {
        x++; // インスタンスフィールドの値を1増やす
        Console.WriteLine("static x = {0}", x);
    }
}

class staticlocal01
{
    public static void Main()
    {
        MyClass mc = new MyClass();

        Console.WriteLine("mcでshow1メソッド呼び出し");
        for (int i = 0; i < 5; i++)
            mc.show1();

        Console.WriteLine("\nmcでshow2メソッド呼び出し");

        for (int i = 0; i < 5; i++)
            mc.show2();
    }
}
では、実行結果を見てみましょう。

ローカル変数は、呼び出しごとに変数の値が振り出しに戻っています。




[C# Index] [総合Index] [Previous Chapter] [Next Chapter]

Update 11/Sep/2006 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。