기초 문법
참고 : 예제로 배우는 C# 프로그래밍(www.csharpstudy.com/CSharp/CSharp-intro.aspx)
< 프로그래밍 언어 >
개념
: 마이크로소프트에서 개발된 객체 지향 프로그래밍 언어.
: .Net Framework를 이용하여 프로그래밍하는 대표적인 언어.
: .cs라는 확장자 사용
: C++과 다르게 별도의 헤더 파일 없음
: Visual Studio / csc.exe
시작 예제
: 모든 C# 프로그램은 Main()이라는 시작 함수(메소드)를 가져야 함
: Main() 메소드는 임의의 클래스 안에서 존재하며, 프로그램 상에 단 1개만 있어야 함
: Main()은 static으로 선언되며, 메소드 인자는 string[] 문자열
< 데이터 타입 >
: .NET 데이터 타입 사용
: 내부적으로 C# 컴파일러는 C# 키워드로 된 데이터 타입을 컴파일한 후, .NET 데이터 타입으로 변경
리터럴 데이터
: 값을 직접 써주면 리터럴(Literal)이라고 함
: C#에서 리터럴 데이터를 사용할 때, 별도의 접미어 표시(Suffix)가 없는 경우 C# 컴파일러는 데이터 타입(int, double, char, string, bool)에 기본적으로 값을 할당함
: 특정 데이터 타입을 지정하고 싶으면 리터럴 데이터 뒤에 1~2자의 타입 지정 접미어를 추가해야 함
: 접미어(Suffix)는 대소문자 구분 없음
Nullable Type
: 정수(int)나 날짜(DateTime)는 일반적으로 NULL을 가질 수 없음
: NULL을 가질 수 있게 한 게 Nullable Type
: C#에서 물음표를 int나 DateTime 뒤에 붙이면 Nullable Type이 됨
: 컴파일하면 .NET의 Nullable<T> 타입으로 변환됨
: 일반 타입으로 변경하려면 .Value 속성 사용
< 배열(Array) >
: 동일한 데이터 타입 요소들로 구성된 데이터 집합
: 인덱스를 통하여 각각의 배열요소(Element)에 접근할 수 있음
: 첫번째 요소가 인덱스 0
: C#은 최고 32차 배열까지 가질 수 있음
: 2차 배열부터는 다차원 배열
(1) Rectangular 배열 : 각 차원별 요소 크기 고정
(2) 가변 배열 : 각 차원별 크기가 서로 다름
Rectangular 배열
: [,]와 같이 괄호 안에 콤마로 분리하여 다차원 표현(C 스타일)
가변 배열
: [] []와 같이 각 차원마다 괄호를 별도로 사용(Java 스타일)
: 배열의 배열이라고 불림
: 첫번째 차원의 크기는 컴파일 타입에 확정되어야 하고, 그 이상 차원은 런타임시 동적으로 서로 다른 크기의 배열로 지정할 수 있음
배열 전달
: 배열 전체를 전달하기 위해서는 보내는 쪽에서 배열명을 사용하고, 받는 쪽에서 동일한 배열 타입의 배열을 받아들이면 됨
: 배열은 참조형(Reference Type)이기 떄문에 배열을 다른 객체나 메소드에 전달할 때, 배열 전체를 가리키는 참조값만 전달