[C# 3.0] 객체 초기화

eunjin lee·2022년 9월 12일
0

C# 9.0 프로그래밍

목록 보기
29/50

생성자에 전달되는 인자의 종류가 다양하면, 그 종류만큼 생성자를 구현해야 하는 번거로움이 있다. public 접근자가 명시되어 있다면, new 구문에서 특정 변수에 값을 할당할 수 있다.


■ 생성할 때 전달해야 하는 인자의 수와 종류가 다르면 아래와 같이 각각의 생성자를 모두 구현해야 한다.

✍ 샘플 코드

     class Test
    {
        static void Main(string[] args)
        {
            Person p0 = new Person();
            Person p1 = new Person("Amy");
            Person p2 = new Person("David", 23);
            Person p3 = new Person("Jane", "Spain");
            Person p4 = new Person("Robert", 30, "France");

        }
     }

    class Person
    {
        string _name;
        int _age;
        string _nationality;

        public Person() : this(string.Empty)
        {
        }
        public Person(string name) : this(name, 0)
        {
        }

        public Person(string name, int age) : this(name, age, "Unknown")
        {
        }

        public Person(string name, string nationality) : this(name, 0, nationality)
        {
        }

        public Person(string name, int age, string nationality)
        {
            _name = name;
            _age = age;
            _nationality = nationality;
        }
    }

■ 각각의 생성자를 모두 만들지 않고도, new 구문에서 객체의 public 변수/속성에 접근하여 값을 지정할 수 있다.

✍ 샘플 코드

    class Test
    {
        static void Main(string[] args)
        {
            Person p0 = new Person();
            Person p1 = new Person { Name = "Amy"};
            Person p2 = new Person { Name = "David", Age = 23 };
            Person p3 = new Person { Name = "Jane", Nationality = "Spain" };
            Person p4 = new Person { Name = "Robert", Age = 30, Nationality = "France" };
            Person p5 = new Person { NotPropertyButValue = "You can assign public field." };
        }
     }

    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Nationality { get; set; }

        public string NotPropertyButValue;
    }

0개의 댓글