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);
}
}
説明:
- ベースクラス (
BaseClass
) では、整数Value
をコンストラクタの引数として受け取ります。 - 派生クラス (
DerivedClass
) のコンストラクタでは、originalValue
を受け取り、base()
呼び出しを通じてベースクラスのコンストラクタに値を渡します。ただし、渡す前にModifyValue
メソッドを使ってその値を変更しています。 ModifyValue
メソッド では、受け取った値を何らかの処理(例では2倍)して、その結果をベースクラスに渡します。
実行結果:
BaseClass のコンストラクタ: Value = 10
DerivedClass のコンストラクタ: Original Value = 5
このように、派生クラスのコンストラクタで受け取った値を変更してからベースクラスのコンストラクタに渡すことが可能です。