티스토리 뷰

tmp

C# 강좌 - 두번째 : 기초소스 뜯어보기

박스여우 2015. 9. 14. 09:54

 

안녕하세요 박스여우입니다.

이번에는 C#의 컴파일러를 틀었을시 기본적으로 작성되있는 소스를하나하나 해석해보도록 하겠습니다.

 


가장 위에있는 using System; 은 3가지의 구성요소로 이루어져 있습니다. using - 영어 그대로 해석하면 사용하다라는 뜻입니다. 그럼, 무엇을 사용할지는 뒤에나올것으로 예상 할수 있겠죠?


System - 앞의 using이 써져있고, 뒤에 System이 붙어있다면? System을 사용하겠다는 것입니다. 마지막으로 ;(세미콜론)은 문장을 끝낸다, 구문을 끝낸다 등의 끝낸다는 뜻을 가지고 있습니다.


위의 내용이 System을 사용하겠다였으니, 나머지 using들은 각자 어디를 사용하겠다는것 이라는점만 알아두시면 됩니다.

 



namespace는 성격이나 하는일이 비슷한 클래스나 구조체, 인터페이스, 델리게이트, 열거형식등을 하나의 이름아래에 묶어주는 역할을 하는것입니다.

namespace 뒤의 ConsoleApplication53namespace의 이름인데, 그 내용물에 맞게 이름을 정하는것이 좋습니다.


예를들어 System.printing 이라는 네임스페이스 내에는 출력에 관련된 일을하는 클래스 등이 소속되어 있습니다. 이와 같이 이름만으로 무엇을 하는 것들이 모여있는지 알수있도록 이름을 정하는것이 좋습니다.

 

 



namespace 안의 class? 학급? 교실? 이라고 생각하시면 안됩니다! 클래스 - class c#프로그램 을 구성하는 기본 단위입니다. 데이터를 처리하는 기능(함수,메소드)와 변수등으로 이루어 지고, 하나의 프로그램에는 최소 하나 이상의 class가 쓰여집니다.

 

class 뒤의 Program클래스의 이름인데, 이것 역시 클래스 내에 이루어진것들을 잘 알수있도록 하는 이름으로 정하는것을 권장합니다.

 




현재 코드의 class내에는 static void Main(String[] args){}라는 것이 있는데요,

이것을 메인 메소드라 부릅니다.

 

메소드의 구성을 보면,

한정자 반환형식 메소드이름(매개변수){}

static    void        Main          (String[] args){}

이런식으로 이루어져 있습니다.

 



한정자메소드나 변수등을 수식합니다. c#에서는 클래스 변수라 불리고, 프로그램이 실행되는 순간부터 메모리가 할당되지만, static이 붙지않은 데이터나 메소드들은 코드가 실행되는 시점에 메모리가 할당됩니다.


메인메소드에 static이 없다면? c#의 프로그램이 실행될때, CRL(Common Language Runtime)은 static과 Main을 통해 프로그램의 진입점을 찾는데, 만약 static으로 수식되있지 않다면 CRL은 진입접을 찾을수 없다는 오류를 출력하고 프로그램은 종료될것입니다. 물론 그전에 컴파일러가 static이 없다고 오류표시를 먼저 할것입니다.

 

 

반환 타입 - static 뒤의 void는 메소드의 반환 타입을 나타내는 것인데, void라는 키워드는 아무것도 반환하지 않겠다는 뜻입니다. 만약에 int,String과 같은 변수형을 사용한다면, 그 형태의 데이터만 반환할수 있습니다.

 

마지막으로 Main의 괄호안 String[] args는 보통의 메소드보다 조금 특별한데, 프로그램이 실행될때 입력하는 매개 변수가 입력됩니다.

 



 

CRL에 대해서...

C# 컴파일러가 만들어 낸 실행 파일은 운영체제가 이해 할 수 없기 때문에 컴파일러는 C# 코드를 읽어 들여 IL ( Intermdiate Language ) 이라는 중간 언어로 작성된 실행 파일을 생성합니다.

 

사용자가 이 파일을 실행시키면 CLR이 중간 코드를 읽어들여 운영체제가 이해 가능한 네이티브 코드로 컴파일 후 실행 시킵니다.

이를 JIT( Just In Time  적시 컴파일 )이라고 부르고 실행에 필요한 코드를 실행할 때마다 실시간으로 컴파일 해서 실행한다는 뜻입니다.

 

 

CLR C# 뿐만 아닌 다른 언어도 지원하도록 설계 되어있으며 서로 다른 언어들이 만나기한 지점이 바로 IL이라고 부릅니다.

 

 

 

이상 박스여우의 C#마스터 - #2 기초 소스 뜯어보기 였습니다!

'tmp' 카테고리의 다른 글

c#마스터 - #4Object 형식과 박싱,언박싱  (0) 2015.09.14
C# 강좌 - 세번째 : 데이터 타입  (1) 2015.09.14
C# 강좌 - 첫번째 : 컴파일러 설치  (0) 2015.09.14
c언어 - 변수  (0) 2015.08.17
stdlib.h :: rand() : 난수 발생  (0) 2015.08.02
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함