C# 3.0부터 클래스를 미리 정의하지 않고 사용할 수 있게 하는 익명타입(Anonymous Type)을 지원하게 되었습니다.
익명타입(Anonymous Type)의 특징
- 읽기전용이다. (get 만 지원한다, set은 안됩니다.)
- 변수에 할당할때에는 var 타입을 사용합니다. (특별하게 타입이 존재하지 않기 때문입니다.)
- new { .... } 형식을 사용합니다. ( .... 에는 속성 = 값으로 할당합니다. Json 형태와 비슷하다고 생각하시면 쉽습니다.)
일반적인 사용방법
1
2
3
4
|
var person = new { Name = "홍길동", Age = 13, Job = "Programer" };
string name = person.Name;
int age = person.Age;
string job = person.Job;
|
cs |
위에처럼 간단하게 person 이라는 익명타입의 객체를 생성 후,
name, age, job 이라는 변수에 넣습니다.
익명타입은 간단히 임시로 만들어서 사용할 때에 유용하게 사용할 수 있습니다. 그것은 C#에서 자주 사용하는 Linq입니다.
Linq에서 사용방법
1
2
3
4
5
6
7
8
9
10
11
|
var persons = new[] {
new { Name = "홍길동", Age = 13, Job = "Programer" },
new { Name = "이국종", Age = 25, Job = "Doctor" },
new { Name = "펀치", Age = 37, Job = "Vocalist" },
};
var list = persons.Select(p => new { Introduce = $"{p.Name}은 {p.Job} 입니다." });
foreach (var item in list) {
Console.WriteLine(item.Introduce);
}
|
cs |
Name, Age, Job 으로 구성된 익명타입을 persons 배열로 생성하였습니다.
그리고 7번째 라인에서 Linq의 Select 함수를 이용해서 새로운 익명타입을 설정해줍니다. 그 속성은 Introduce로 생성해주었고 persons에 있는 속성인 Name과 Job 을 이용하였습니다.
굳이 클래스를 만들 필요 없이, 간단하게 사용할때에는 익명타입을 자주 사용하게 될 것입니다.
'개발 > C#' 카테고리의 다른 글
[C#] DateTime.Ticks 날짜/시간 차이 구하기 (8) | 2019.12.01 |
---|---|
[C#] override VS new 재정의 사용 방법(feat. virtual, abstract) (12) | 2019.10.04 |
[C#] async/await 비동기 프로그래밍 알아보자! (4) | 2019.09.22 |
[C#] 연산자 오버로드 (10) | 2019.08.22 |
[C#] Indexer 란? 무엇인가. (0) | 2019.08.14 |