컴퓨터 자체가 전쟁때문에 만들어짐
포트란 탄생 -> 베이직 -> 유닉스를 위한 C언어 -> C++ -> C#
컴파일러 :
프로그램 논리가 담겨있는 소스 파일을 입력받아서 프로그램 즉, 실행 파일을 만든다.
소스파일 -> 컴파일러 -> 실행파일
C#에서는 소스파일을 쉽게 관리하기 위해서
"프로젝트"라는 개념 도입
.csproj 가 프로젝트 확장자임.
Program.cs는 소스파일
TestProject.sln은 뭐냐?
이런 csproj == 프로젝트 여러개를 관리 할 수 있게
"솔루션" 이라고 제공
솔루션
프로젝트 프로젝트
소스코드 소스코드 소스코드 소스코드
이런식임
컴파일을 하면 실행 파일을 만들어서 실행하는데
이 실행파일은
경로가 이렇고 실제로 실행하면
exe파일이 있다.
여기서 Main이 당연하게도 "프로그램이 시작되는 곳"이다.
이 함수는 프로그램의 진입점이다.
모든 프로그램은 반드시 이 함수를 하나 가지고 있어야함.
static == 한정자
이 static키워드로 수식되는 코드는 프로그램이 처음 구동 될 때부터 진작에
"메모리"에 할당되어있는 상태이다.
프로그램 실행 -> CLR은 프로그램을 메모리에 올린후 ->
프로그램 진입점을 찾는다.
그런데 Main에서 static으로 선언해주지 않으면 진입점을 못찾아
-> 에러
C#으로 만든 프로그램이 실행되는 환경. p31참조, P33
C# 어플리케이션, VB.NET 애플케이션, C++ 어플리캐이션
----------------------------------------------
.NET 라이브러리
----------------------------------------------
CLR
----------------------------------------------
운영체제(Window, Linux, OS X...)
----------------------------------------------
하드웨어(x86/x64,ARM...)
순서가 이름 자바의 실행환경인 자바 가상머신과 비슷함.
1) C# 컴파일러는 C#소스코드를 컴파일 ->
2) IL 중간언어로 작성된 실행파일 만듦 ->
3) 이 파일 실행 -> CLR이 중간코드 읽어서 ->
4) 하드웨어가 이해할 수 있는 네이티브 코드로 컴파일 하여 실행함.
P34 읽어보기
args는 프로그램을 싱행할 때 입력하는 매개변수가 입력이 된다.
cmd ->
해당 실행파일 경로 ㄱㄱ
실행을 하였을 때 지금 TestProject.ext asd에서 asd가 args에 입력이 되어
if문에 안걸리고 밑으로 내려와 Hello asd가 출력이 됨.