- 子クラス: static変数初期化子
- 子クラス: staticコンストラクタ
- 子クラス: 変数初期化子
- 親クラス: static変数初期化子
- 親クラス: staticコンストラクタ
- 親クラス: 変数初期化子
- 親クラス: コンストラクタ(コンストラクタ初期化子)
- 親クラス: コンストラクタ
- 子クラス: コンストラクタ(コンストラクタ初期化子)
- 子クラス: コンストラクタ
確認用コード
// 変数初期化子テスト用のクラス
public class FieldClass
{
public FieldClass(string str)
{
Console.WriteLine(str);
}
}
// 親クラス
class BaseClass
{
static FieldClass baseStaticField = new FieldClass("4. 親クラス: static変数初期化子");
FieldClass baseField = new FieldClass("6. 親クラス: 変数初期化子");
static BaseClass()
{
Console.WriteLine("5. 親クラス: staticコンストラクタ");
}
public BaseClass() : this("dummy")
{
Console.WriteLine("8. 親クラス: コンストラクタ");
}
public BaseClass(string dummy)
{
Console.WriteLine("7. 親クラス: コンストラクタ(コンストラクタ初期化子)");
}
}
// 子クラス
class DerivedClass : BaseClass
{
static FieldClass derivedStaticField = new FieldClass("1. 子クラス: static変数初期化子");
FieldClass derivedField = new FieldClass("3. 子クラス: 変数初期化子");
static DerivedClass()
{
Console.WriteLine("2. 子クラス: staticコンストラクタ");
}
public DerivedClass() : this("dummy")
{
Console.WriteLine("10. 子クラス: コンストラクタ");
}
public DerivedClass(string dummy)
{
Console.WriteLine("9. 子クラス: コンストラクタ(コンストラクタ初期化子)");
}
}
public class ConstructorTest
{
static void Main()
{
var obj = new DerivedClass(); // 子クラスをインスタンス化
}
}