C# 3.0 미리보기 : Object Initializers, Collection Initializers

2007. 6. 3. 11:04 IT 및 개발/.NET FX & Visual C#
이 팁은 Visual Studio Codename "Orcas"에서 사용되는 C# 입니다.
제 생각에는 C# 3.0이라고 생각되어 개인적으로 C# 3.0 미리보기라고 한것입니다.

작업 환경
- Windows Server 2003 Standard Service Pack 2
- Visual Studio Codename "Orcas"

두번째 시간입니다.
이번엔 Object Initializers, Collection Initializers에 대해서 알아보도록 하겠습니다.
이번 역시 설명보다는 예제로 설명을 하도록 하겠습니다.

일단 먼저 Object Initializers에 대해서 먼저 설명을 하도록 하겠습니다.

1. C# 2.0에서 Object Initializers 사용법

Person person = new Person();
person.FirstName = "Sanghyun";
person.LastName = "Han";
person.Age = 27;

C# 2.0에선 위 예제처럼 일단 객체를 생성하고 그 객체의 각 프로퍼티에 값을 넣어주는 형식입니다.
그러나 이런 방법을 C# 3.0에선 객체를 생성하면서 한번에 가능합니다..

근데, 제 나이까지 공개가 되어 버리네요.. ㅋㅋ

2. C# 3.0에서 Object Initializers 사용법
 
Person person = new Person { FirstName = "Sanghyun", LastName = "Han", Age = 27 };

보시는 바와 같이 아주 간단합니다.
객체 생성시 {} 안에 프로퍼티 = 값 이렇게만 해주면 되는거죠!!

더 확장으로 객체안에 다른 객체를 초기화 하는 방법입니다.
물론 위의 방법과 같습니다.

Person person = new Person
{
    FirstName = "Sanghyun",
    LastName = "Han",
    Age = 27,
    Phone = new Phone
    {
        Home = "02-2222-3333",
        Cellular = "010-2222-3333"
    }
};

위 예제를 보는봐와 같이 객체 안에서 다른 객체를 생성하고 그 안에 프로퍼티의 값을 넣어주면 됩니다.
역시 엄청 편하죠^^

그럼 이번에 좀더 확장된 개념으로 Collection Initializers에 대해서 알아보도록 하겠습니다.

방법은 컬렉션의 Add 함수를 사용하는 방법과 컬렉션 생성에서 바로 추가하는 방법을 알아보도록 하겠습니다.

1.  Collection의 Add 함수를 사용

List<Person> people = new List<Person>();
people.Add(new Person { FirstName = "Sanghyun", LastName = "Han", Age = 27 });
people.Add(new Person { FirstName = "Bill", LastName = "Gates", Age = 50 });
people.Add(new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 });

일반적으로 컬렉션 객체를 생성하고 Add 함수를 사용해서 객체를 넣는 방식입니다.
객체를 초기화 하는 방법은 위에서 설명한 방법대로 하면 되는 것입니다.

2. Collection을 초기화 할때 사용

List<Person> people = new List<Person>
{
    new Person { FirstName = "Sanghyun", LastName = "Han", Age = 27 },
    new Person { FirstName = "Bill", LastName = "Gates", Age = 50 },
    new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 }
};

방식은 객체 초기화와 비슷하다는걸 알수 있습니다.
역시 많이 편해졌네요^^..
이것으로 두번째 팁을 마치도록 하겠습니다.
다음엔 확장 함수에 대해서 알아보도록 하죠^^

작성자 : 상현넘™ [SHBLITZ.NET]