メンバー変数とローカル変数

2019年6月13日

メンバー変数はクラスの所属する変数、ローカル変数はメソッドに所属する変数です。

次のコードは、正方形の面積を計算するメソッドです。side変数は、メソッドに属しているので、ローカル変数になります。このコードで計算できます。

// 面積を計算するメソッド
public int GetArea()
{
    // 一辺の長さ
    int side = 3;
    // 面積
    int area = side * side;
    return area;
}

ここで、さらに図形の周りの長さを計算するメソッドを追加作成したいとします。

// 図形の周りの長さを計算するメソッド
public int GetSurround()
{
    // 一辺の長さ
    int side = 3;
    // 図形の周りの長さ
    int surround = side * 4;
    return surround;
}

これも問題ありません。

正方形クラスでまとめると

// 正方形クラス
class Square
{
    // 面積を計算するメソッド
    public int GetArea()
    {
        // 一辺の長さ
        int side = 3;
        // 面積
        int area = side * side;
        return area;
    }
    // 図形の周りの長さを計算するメソッド
    public int GetSurround()
    {
        int side = 3;
        int surround = side * 4;
        return surround;
    }
}

さて、この正方形ですが、「正方形」の情報として、メソッドそれぞれに一辺の長さを別々に宣言して扱うことに意味なないですね。そうです。ローカル変数からメンバー変数に移動することで、わかりやすくすることができるのです。

このようなコードにすることができます。見比べてみましょう

// 正方形クラス
class Square
{
    // 一辺の長さ(メンバー変数、フィールド)
    int side = 3;

    // 面積を計算するメソッド(メンバーメソッド)
    public int GetArea()
    {
        // 面積
        int area = side * side;
        return area;
    }
    // 図形の周りの長さを計算するメソッド(メンバーメソッド)
    public int GetSurround()
    {
        int surround = side * 4;
        return surround;
    }
}

呼び出し元のサンプル

class Program
{
    static void Main(string[] args)
    {
        Square square1 = new Square();
        Console.WriteLine(square1.GetArea());
    }
}

C#

Posted by hidepon