C# 프로그램 뜯어보기
using System;
namespace Csharp_210107
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
| static | 한정자 (Modifier) |
메소드나 변수 등을 수식 C# 프로그램의 각 요소는 코드가 실행되는 시점에 비로소 메모리에 할당되는 반면, static 키워드로 수식되는 코드는 프로그램이 처음 구동될 때부터 진작에 메모리에 할당됨 |
|
| void | 반환형식 | ||
| Main | 메소드 이름 | ||
| string[] args | 매개 변수 | ||
| CLR | Common Language Runtime | C#으로 만든 프로그램이 실행되는 환경 이 런타임이 지원하는 언어는 C#뿐만 아니라 CLS(Common Language Specification) 규격을 따르는 모든 언어로 작성된 프로그램을 지원 CLR은 단순히 각 언어로 작성된 프로그램의 실행뿐 아니라 서로 다른 언어로 작성된 언어 사이의 호환성을 제공 프로그램이 실행되면 CLR은 프로그램을 메모리에 올린 후 프로그램의 진입점을 찾는데, 이 때 Main() 메소드가 static 키워드로 수식되어 있지 않다면 CLR은 진입점을 찾지 못하여 에러 메시지를 출력 +) 기능 1. 프로그램 예외 처리 2. 언어간 상속 지원 3. COM과의 상호 운영성 지원 4. 자동 메모리 관리(가비지 컬렉션, Garbage Collection) |
|
CLR에 대하여

CLR은 .NET 프레임워크와 함께 OS 위에 설치된다.
네이티브 코드로 작성되어 있는 프로그램들은 운영체제가 직접 실행할 수 있지만, C# 컴파일러가 만들어낸 실행 파일은 하드웨어가 이해할 수 없는 코드로 구성되어 있기 때문에 실행할 수 없다.
C# 컴파일러는 C# 소스 코드를 IL(Intermediate Language)이라는 중간 언어로 작성된 실행 파일을 만들어내는데, 사용자가 이 파일을 실행시키면 CLR이 중간 코드를 읽어 다시 하드웨어가 이해할 수 있는 네이티브 코드로 컴파일한 후 실행시킨다.
=> JIT (Just In Time) 컴파일 = 적시 컴파일
즉, 실행에 필요한 코드를 실행할 때마다 실시간으로 컴파일해서 실행한다는 뜻
WHY ?
그냥 실행 코드를 만들어 놓고 쓰지 않고 두 번씩이나 컴파일을 할까?
C#이 동작하는 환경이자 엔진인 CLR은 C#뿐만 아니라 다른 언어도 지원하도록 설계되어 있다.
서로 다른 언어들이 만나기 위한 지점이 IL이라는 중간 언어이고, 이 언어로 쓰여진 코드를 CLR이 다시 자신이 설치되어 있는 플랫폼에 최적화시켜 컴파일한 후 실행.
장점
- 플랫폼에 최적화된 코드 생성
단점
- 실행 시에 이뤄지는 컴파일 비용의 부담
'ETC > C#' 카테고리의 다른 글
| 데이터를 가공하는 연산자 (0) | 2021.01.11 |
|---|---|
| C# 문자열 다루기 (0) | 2021.01.10 |
| C# 데이터 보관하기 (3) (0) | 2021.01.10 |
| C# 데이터 보관하기 (2) (0) | 2021.01.09 |
| C# 데이터 보관하기 (0) | 2021.01.08 |
댓글