3.0 · 버전 이력
C# 3.0
질의(LINQ)와 그것을 떠받치는 문법들이 한꺼번에 더해졌습니다.
한눈에
무엇이 더해졌나
C# 3.0은 2007년에 나왔습니다. 목표는 하나, LINQ였습니다. 데이터를 거르고 고르고 모으는 일을 코드 안에서 질의처럼 적게 하려던 것인데, 그것을 떠받치려 여러 문법이 한꺼번에 들어왔습니다.
- var — 오른쪽을 보고 타입을 추론합니다.
- 람다식 — 이름 없는 메서드를 짧게 적습니다.
- 확장 메서드 — 남의 형식에 메서드를 덧붙입니다.
- 익명 형식 — 이름 없는 형식을 그 자리에서 만듭니다.
- 컬렉션 이니셜라이저 — 값을 늘어놓아 채웁니다.
이 가운데 var 와 컬렉션 이니셜라이저는 1부 기초에서,
나머지는 3부 LINQ에서 다룹니다.
var
타입을 적는 수고만 줄이기
var 는 타입을 없애는 것이 아닙니다.
오른쪽 값을 보고 컴파일러가 대신 정할 뿐이며, 정해진 뒤에는 다른 타입을 담을 수
없습니다. 형식 이름이 길어질수록 이득이 커집니다.
C# 2 까지
Dictionary<string, List<int>> map = new Dictionary<string, List<int>>();
C# 3 부터
var map = new Dictionary<string, List<int>>();
오른쪽만 보고 무엇인지 알기 어렵다면 타입을 적는 편이 낫습니다.
var n = Get(); 는 짧지만 읽는 사람이 Get 을
찾아가 보아야 합니다.
C# 1.3 변수와 데이터 타입 에서 자세히 다룹니다.
컬렉션 이니셜라이저
값을 늘어놓아 채우기
만들어 두고 Add 를 줄줄이 부르는 대신, 중괄호 안에
값을 늘어놓으면 됩니다.
C# 2 까지
var list = new List<int>(); list.Add(1); list.Add(2); list.Add(3);
C# 3 부터
var list = new List<int> { 1, 2, 3 };
C# 12.0에서는 형식 이름까지 생략하고 대괄호만으로 적을 수 있게 되었습니다 —
List<int> list = [1, 2, 3]; 처럼 씁니다.
C# 1.7 배열과 컬렉션 기초 에서 자세히 다룹니다.
배경
- 이 판이 겨눈 것은 데이터를 다루는 코드를 읽히게 하는 것이었습니다.
- 여기 들어온 문법 대부분은 LINQ 하나를 떠받치려고 마련된 것입니다.
- 그런데 그것들이 LINQ 밖에서도 널리 쓰이며 지금의 C# 모습을 만들었습니다.