생성자에 전달되는 인자의 종류가 다양하면, 그 종류만큼 생성자를 구현해야 하는 번거로움이 있다. 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;
}
}
✍ 샘플 코드
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;
}