본문 바로가기

C#

20240513 C# 구조이해

컴파일러

컴파일러에 의해 exe, dll 파일 등과 같이 만들어진 출력 파일을 어셈블리(Assembly)_라고 부르는데 이것을 컴퓨터는 다시 자신이 알 수 있는 원시 코드로 컴파일하여 우리가 만든 프로그램이 실행되게 만듭니다

 

[C# 코드]->[C# 컴파일]->[빌드]->[exe, dll 실행]->[원시 코드 컴파일]->[프로그램 시작]

 

디버깅

일반적으로 게임을 하다보면 의도치 않은 종료나 비정상적인 결과가 나왔을 때 유저들을 버그라고 부름

이런 논리적 오류나 잠재적인 오류를 가리켜 통칭 버그(Bug)라 부르는데 이를 근본적인 원인을 찾아내 해결할 수 있는 작업을 디버깅이라 할 수 있음

 

디버깅을 하기 위해서는 F5를 누르면 디버깅이 시작되는데 결과창을 확인 하기도 전에 콘솔창이 닫히게 되는데 이는 코딩을 잘못해서가 아니라 컴퓨터가 더이상 행할 수 있는 코드가 없어서 자동 종료된 것임

우리가 사용하였던 Ctrl+F5는 디버깅을 하지 않고 실행을 누른 것과 마찬가지로 동작하게 됨

 

using System;

[키워드]+[네임스페이스]+[문장의 끝을 알리는 기호]

System이라는 네임스페이스를 가져다 쓰겠다 라고 컴파일러에게 알리는 역할

 

네임스페이스

성격이 비슷한 클래스(Class), 구조체(Struct), 인터페이스(Interface) 등을 그룹화한 것

여기서 클래스는 정적인 것과 동적인 기능으로 나뉘는데 정적인 것은 필드 동적인 것은 메소드로 표현됨

이는 프로그램을 구성하는 기본 단위이고 하나의 클래스는 여러 개의 객체를 만들어 낼 수 있음

 

메인

static void Main 메소드는 프로그램의 최초 진입점을 나타내며 반드시 있어야 하는 메소드

프로그램이 시작되면 메인 메소드를 통해 차례차례 동작하고 마지막에 도달하면 더이상 실행할 코드가 없으므로 프로그램이 종료됨

static은 한정자로 정적인 메소드를 의미하고 void는 반환 형식으로 반환 값이 없다는 것을 의미함

 

정리

컴파일러야 나는 프로그램을 시작하기 전에 System이라는 네임스페이스를 가져다 쓸 거니 준비해둬

그리고 내가 만들 네임스페이스는 ConsoleApp1이야 여기엔 Program이라는 클래스를 만들거야

Program클래스에는 내가 만든 프로그램을 시작할 진입점이 있어 거기서부터 차례대로 일을 시작하자

System 네임스페이스로부터 가져온 Console.WriteLine에 "안녕하세요"라는 문자열을 전해줘

더이상 할일이 없으면 프로그램을 종료해줘

 

출처) 블로그 IT가 만드는 재기 넘치는 세상