1.0 · 버전 이력
C# 1.0
언어의 뼈대가 놓인 첫 판입니다.
한눈에
여기서 시작했습니다
C# 1.0은 2002년 .NET Framework 1.0과 함께 나왔습니다. 이 판에는 "무엇이 더해졌나" 를 적을 수 없습니다 — 모든 것이 새것이었기 때문입니다. 대신 눈여겨볼 것은 그때 정해진 것들이 스무 해가 넘도록 거의 그대로라는 점입니다.
- 기본 문법 — 변수·연산자·조건문·반복문
- 클래스와 인터페이스 — 객체지향의 뼈대
- 메서드와 오버로딩 — 같은 이름을 여럿 두기
- 배열 — 값을 여럿 담기
- try-catch-finally — 잘못될 수 있는 일 다루기
- 축자 문자열 — 적힌 그대로 담는
@"..."
지금도 그대로
지금 코드에도 그대로 있는 것들
기초 문법 가운데 절반 넘게가 이 판의 것입니다. 아래 코드는 2002년에도, 지금도 똑같이 컴파일됩니다.
int[] scores = { 90, 85, 77 }; int sum = 0; foreach (int s in scores) { if (s >= 80) sum += s; } try { Console.WriteLine(sum / scores.Length); } catch (DivideByZeroException) { Console.WriteLine("나눌 수 없습니다."); }
뒤이은 판들이 더한 것은 대개 같은 일을 짧게 적는 길이었습니다. 위 코드를 지금 문법으로 다시 적으면 짧아지지만, 하는 일은 같고 옛 방식도 여전히 맞습니다. 오래된 코드에서 이런 모양을 만나더라도 고쳐야 할 잘못이 아닙니다.
C# 1.6 반복문 · 1.8 메서드 기초 · 1.10 예외 처리 기초 가 모두 이 판의 문법을 다룹니다.
그때는 없던 것
무엇이 아쉬웠나
이 판에 없어서 불편했던 것들이 곧 다음 판들의 과제가 되었습니다. 버전 이력을 읽는 재미는 이 대목에 있습니다.
| 없던 것 | 그래서 어떻게 했나 | 언제 풀렸나 |
|---|---|---|
| 제네릭 | 무엇이든 담기는 ArrayList 를 쓰고 꺼낼 때마다 되돌려 밝힘 | C# 2.0 |
| 값 없음(null) 표시 | -1 같은 값을 약속해 두고 사용 | C# 2.0 |
| 타입 추론 | 긴 형식 이름을 두 번씩 적음 | C# 3.0 |
| 문자열에 값 끼우기 | 번호를 매겨 string.Format 으로 넘김 | C# 6.0 |
배경
- C#은 처음부터 정적 타입과 객체지향을 뼈대로 삼았습니다.
- 그 뼈대는 지금까지 바뀌지 않았고, 뒤의 판들은 그 위에 얹혔습니다.
- 그래서 옛 코드가 지금도 대체로 그대로 돕니다.