첫 번째 C# 프로그램
컴파일
- C# 컴파일러는 확장자가 .cs인 일단의 소스코드 파일들을 컴파일해서 하나의 어셈블리를 생성한다. 어셈블리는 .NET 프로그램 패키징 및 배포 단위이다. 어셈블리는 응용 프로그램(application)일 수도 있고 라이브러리(library)일 수도 있다.
- 보통의 콘솔 또는 Windows 응용 프로그램은 진입점 Main 메서드를 가지고 있으며 파일 확장자는 .exe이다. 라이브러리의 확장자는 .dll이며, .exe와는 달리 진입점이 없다. 라이브러리의 주된 용도는 라이브러리 안의 코드를 다른 응용 프로그램이나 다른 라이브러리가 호출 또는 참조하는 것이다. .NET Framework는 라이브러리들의 집합이다.
- C# 컴파일러 프로그램의 이름은 csc.exe이다. C# 프로그램은 Visual Studio 같은 IDE로 컴파일 할 수도 있고, 명령줄에서 csc를 직접 실행해서 컴파일 할 수도 있다.
csc MyFirstProgram.cs // 응용 프로그램 컴파일
csc /target:library MyFirstProgram.cs // 라이브러리 컴파일
구문
키워드와의 충돌 피하기
- 예약된 키워드에 해당하는 식별자를 꼭 사용해야 한다면 식별자 앞에 접두사 @를 붙이면 된다.
- @ 기호는 식별자 자체의 일부로 간주되지 않는다. 즉, @myVariable은 myVariable과 같다.
- 접두사 @는 C#과는 다른 키워드들을 가진 다른 .NET 언어로 작성된 라이브러리를 C# 프로그램에서 사용할 때 유용할 수 있다.
생성자와 인스턴스화
값 형식과 참조 형식
- 값 형식과 참조 형식의 근본적인 차이는 메모리 안에서 해당 형식의 인스턴스가 처리되는 방식에 있다.
값 형식
- 값 형식 인스턴스를 배정하면 항상 해당 인스턴스가 복사된다.
- 값 형식에 복사를 수행하면 복사된 값은 개별적인 장소에 저장된다.


참조 형식
- 참조 형식은 객체와 그 객체를 참조하는 참조로 이루어진다. 참조 형식 변수나 상수의 내용은 값을 담고 있는 객체를 가리키는 참조이다.
- 참조 형식의 변수를 배정하면 참조만 복사되고 객체 인스턴스는 복사되지 않는다. 이 때문에 같은 객체를 여러 개의 변수가 참조할 수 있다.