콘텐츠로 건너뛰기

C# 생성자와 필드 초기화

https://docs.microsoft.com/ko-kr/archive/blogs/ericlippert/why-do-initializers-run-in-the-opposite-order-as-constructors-part-two

생성자와 필드 초기화 순서가 궁금하여 다음과 같은 예제 코드를 작성했다. 위 링크의 포스트에 비슷한 예제가 있으니 궁금하면 한번 확인해보기 바란다.

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 로 호출되었다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다