クラス内のメソッドをプロパティに変更

2022年7月6日

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

正方形クラス

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;
    }
}

Mainメソッド

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;
        }
    }
}

Mainメソッド

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;
}

Mainメソッド

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