생성자와 필드 초기화 순서가 궁금하여 다음과 같은 예제 코드를 작성했다. 위 링크의 포스트에 비슷한 예제가 있으니 궁금하면 한번 확인해보기 바란다.
class Apple
{
public Apple(string text)
{
Console.WriteLine(text);
}
}
class Orange
{
Apple apple = new Apple("Orange apple");
Apple apple1 = new Apple("Orange apple1");
public Orange()
{
Console.WriteLine("Orange write");
}
}
class Melon : Orange
{
Apple greenApple = new Apple("Melon apple");
Apple blueApple = new Apple("Blue melon apple");
public Melon()
{
Console.WriteLine("Melon write");
}
public void Shape()
{
Console.WriteLine("melon is sphere");
}
}
class Program
{
static void Main(string[] args)
{
new Melon();
}
}
결과는 다음과 같다.

초기화 리스트는 derived class -> base class 순으로 그리고 위에서 아래쪽으로 실행 되었다.
하지만 생성자는 base class -> derived class 로 호출되었다.