1. C# ?
- MS사에서 개발한 객체지향(OOP)'프로그래밍 언어'
2. C#의 이용
- 콘솔 애플리케이션
: Windows의 명령 프롬로트 내에서 동작하는 CUI(Character User Interface : 문자 사용자 인터페이스) 애플리케이션이며 문자로만 구성된 화면(콘솔화면)에서 명령을 입력해 조작함
- Windows 애플리케이션
: 창이나 버튼 같은 GUI(Graphic User Interface : 그래픽 사용자 인터페이스)를 가진 애플리케이션
- 웹 애플리케이션
: 사용자의 웹 브라우저에서 제기되는 요구에 대해 서측에서 동작하여 GTML 페이지를 생성함. 웹 페이지를 마치 Windows 애플리케이션 처럼 취급할 수 있는것이 특징 (==ASP.NET)
- 문자표시
: Write() / WriteLine() 메소드 활용
- 변수
: 정수형, 실수형, 문자형 등 형을 지정하여 용도에 따른 활용 가능, 그외에도 배열/데이터 형 등으로 각기 다른 활용가능
- 수치형 (정수형 & 실수형)
: 기본은 비트로 된 메모리 크기
- 정수형 → Byte(8) Short(16) int(32) Long(64)
- 실수형 → Float(32) Double(64)
- 문자와 문자열
: 문자 = 한 문자 표시할때 → char E = "아";
: 문자열 = 문자의 결합 및 여러문자를 한번에 → String hi = "Hello";
- using 키워드
: C#의 키워드중 하나이며 " using"만 사용하면 네임스페이스 전체를 사용
: using static은 어떤 데이터 형식의 정적멤버를 데이터형식의 이름을 명시하지 않고 참조하는 기능
- static void Main(string[ ] args) { }
: 프로그램의 진입점
: 모든 프로그램은 Main이라는 이 름을 가진 메소드를 하나 가지고 있어야함.
- CLR (common language Runtime
: C#컴파일러는 C#소스코드를 IL (Intermaediate Language) 라는 중간언어로 작성된 실행파일을 생성함
: 사용자가 이 파일을 실행시키면 CLR이 중간코드를 읽어 들여 다시 하드웨어가 이해할 수 있는 네이티브 코드로 컴파일한 후 실행함
: 이것을 JIT(Just In Time) 컴파일 이라고 함
: 실행에 필요한 코드를 실행할 때마다 실시간으로 컴파일해서 실행한다는 뜻
※ 왜 두 번씩이나 컴파일하는 과정을 거치는가 ?
: 서로 다른 언어들이 만나기 위한 지점이 바로 IL이라는 중간언어, 이 언어로 쓰여진 코드를 CLR이 다시 자신이 설치되어 있는 플랫폼에 최적화시켜 컴파일하는 것, 다양한 플햇폼에 최적화된 코드를 만들어 냄
- 값 형식과 참조 형식
: 값형식 → 변수가 값을 담는 데이터 형식 (스택 메모리 영역과 관련)
: 참조 형식 → 변수가 값 대신 값이 있는 곳의 위치를 담는 데이터 형식( 힙 메모리 영역과 관련)
- 스택과 힙
: 값 형식의 변수는 모두 스택에 저장되어 코드 블록 안에서 생성된 모드 값 형식의 변수들은 "}" 을 만나게 되면 메모리에서 제거
: 참조 형식은 힙 영역에는 데이터를 저장하고 스택 영역에는 데이터가 저장되어 있는 힙 메모리의 주소를 저장
: 스택은 변수의 생명 주기가 다 하면 자동으로 데이터를 제거
: 힙은 더 이상 데이터를 참조하는 곳이 없을 때 가비지 콜렉터가 데이터를 치워주는 구조
- Nullable 형식
: 변수에게 할당된 메모리 공간을 비워둘 수 있도록 Nullable 형식을 사용
ex) 데이터형식? 변수이름;
: int a= null 과 int? a = null 은 서로 다름
: Nullable 형식은 HasValue와 Value 속성을 가지고 있음
: HasValue 속성은 해당 변수가 값을 갖고 있는지 또는 그렇지 않은지를 나타냄
: Value 속성은 변수에 담겨 있는 값을 나타냄
- var
: var 키워드를 통해서 약한 형식 검사를 하는 언어의 편리함도 지원
: var는 지역 변수로만 사용 가능, 코드 블록 안에서 선언되는 변수를 뜻함, 다른 코드에서는 접근할 수 없다는 특징
: 초기화를 꼭 해줘야함.
: C#에서 전역변수를 지원하지 않도록 만들었다.