クラス内のメソッドのプロパティ化

メソッドで構成されたクラス

// 正方形クラス
class Square
{
    // 一辺の長さ
    int side;

    // フィールドsideに初期値を代入
    public Square(int side)
    {
        this.side = side;
    }

    // 面積を計算するメソッド
    public int GetArea()
    {
        // 面積
        var area = side * side;
        return area;
    }
    // 図形の周りの長さを計算するメソッド
    public int GetSurround()
    {
        // 図形の周りの長さ
        var surround = side * 4;
        return surround;
    }
}
class Program
{
    static void Main(string[] args)
    {
        var square1 = new Square(3);
        Console.WriteLine(square1.GetArea());
    }
}

プロパティで構成されたクラス

// 正方形クラス
class Square
{
    // 一辺の長さ(プロパティ)
    public int Side { get; set; }

    // フィールドsideに初期値を代入(コンストラクタ)
    public Square(int side)
    {
        this.side = side;
    }

    // 面積を計算する(プロパティ)
    public int Area
    {
        get
        {
            var area = Side * Side;
            return area;
        }
    }

    // 図形の周りの長さを計算する(プロパティ)
    public int Surround
    {
        get
        {
            var surround = Side * 4;
            return surround;
        }
    }

}
class Program
{
    static void Main(string[] args)
    {
        var square1 = new Square(3);
        Console.WriteLine(square1.Area);
        square1.Side = 5;
        Console.WriteLine(square1.Area);

    }
}

おまけ

さらにC#の機能を適用すると次のようになります。上の2つのコードと全く同じものです。

// 正方形クラス
class Square
{
    // 一辺の長さ(プロパティ)
    public int Side { get; set; }

    // フィールドsideに初期値を代入(コンストラクタ)
    public Square(int side) => Side = side;

    // 面積を計算する(プロパティ)
    public int Area => Side * Side;

    // 図形の周りの長さを計算する(プロパティ)
    public int Surround => Side * 4;

}
class Program
{
    static void Main(string[] args)
    {
        var square1 = new Square(3);
        Console.WriteLine(square1.Area);
        square1.Side = 5;
        Console.WriteLine(square1.Area);

    }
}

C#

Posted by hidepon