端くれプログラマの備忘録 C# [C#] 派生クラスのコンストラクタが受け取った値を変更してベースクラスのコンストラクタに渡すには?

[C#] 派生クラスのコンストラクタが受け取った値を変更してベースクラスのコンストラクタに渡すには?

C# では、派生クラスのコンストラクタで値を受け取り、その値を変更してベースクラスのコンストラクタに渡すことができます。これを行うには、派生クラスのコンストラクタで値を処理し、その結果をベースクラスのコンストラクタに渡す base() 呼び出しを使用します。

具体的には、以下のようにします:

例:派生クラスのコンストラクタで値を変更してベースクラスに渡す

using System;

public class BaseClass
{
    public int Value { get; }

    // ベースクラスのコンストラクタ
    public BaseClass(int value)
    {
        Value = value;
        Console.WriteLine($"BaseClass のコンストラクタ: Value = {Value}");
    }
}

public class DerivedClass : BaseClass
{
    // 派生クラスのコンストラクタ
    public DerivedClass(int originalValue) : base(ModifyValue(originalValue))
    {
        Console.WriteLine($"DerivedClass のコンストラクタ: Original Value = {originalValue}");
    }

    // 値を変更するメソッド
    private static int ModifyValue(int value)
    {
        // 値を変更(例えば2倍にする)
        return value * 2;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // DerivedClass のインスタンスを作成
        DerivedClass obj = new DerivedClass(5);
    }
}

説明:

  1. ベースクラス (BaseClass) では、整数 Value をコンストラクタの引数として受け取ります。
  2. 派生クラス (DerivedClass) のコンストラクタでは、originalValue を受け取り、base() 呼び出しを通じてベースクラスのコンストラクタに値を渡します。ただし、渡す前に ModifyValue メソッドを使ってその値を変更しています。
  3. ModifyValue メソッド では、受け取った値を何らかの処理(例では2倍)して、その結果をベースクラスに渡します。

実行結果:

BaseClass のコンストラクタ: Value = 10
DerivedClass のコンストラクタ: Original Value = 5

このように、派生クラスのコンストラクタで受け取った値を変更してからベースクラスのコンストラクタに渡すことが可能です。