1.0 · 버전 이력

C# 1.0

언어의 뼈대가 놓인 첫 판입니다.

2002 .NET Framework 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#은 처음부터 정적 타입과 객체지향을 뼈대로 삼았습니다.
  • 그 뼈대는 지금까지 바뀌지 않았고, 뒤의 판들은 그 위에 얹혔습니다.
  • 그래서 옛 코드가 지금도 대체로 그대로 돕니다.