본문 바로가기
C#/C# 공부

C# - Hello Wolrd! 분석하기

by TODAYCODE 2021. 7. 5.
반응형

기본적으로 비주얼스튜디오2019에서 c# 콘솔을 실행시키면 다음과 같은 소스코드가 적혀있다.

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

위의 기본적으로 생성되는 소스코드를 하나씩 뜯어보자.

 

 

1. using System;

 

using은 C#의 '키워드' 중 하나이다.

'키워드'는 C# 언어 규격에 미리 정의되어있는 특별한 단어이다.

'키워드'는 기본적으로 이미 존재하는 상황이기 때문에 코드를 작성할 때 using이라는 이름을 사용하면 에러가 발생한다.

using은 이름 그대로 뒤에 나올 System이라는 네임스페이스안에 있는 클래스를 사용하겠다는 뜻이다.

 

 

2. namespace ConsoleApp1

 

namespace는 그야말로 이름이라고 생각하면 쉽다.

수많은 코드들이 존재하고 다양한 클래스들이 존재하며, .NET 클래스 라이브러리만 해도 만여개가 넘는 클래스가 존재한다. 이렇게 많은 것들을 구분할 수 있는 이유가 네임스페이스 덕분이다. 이름으로 구분하는 것과 비슷하다고 생각하면 된다.

 

 

3. class Program

 

class는 c#을 구성하는 기본 단위로 데이터와 이를 처리하는 기능으로 이루어진다.

최소 하나 이상의 클래스로 이루어진다.

 

4. static void Main(string[] args)

 

위의 단어들을 하나씩 떼어보면 이렇게 된다.

static      void           Main         ( string[] args )

한정자 / 반환형식 / 메소드이름 /      매개변수

 

한정자는 메소드나 변수 앞에서 사용된다.

static이 존재하는 경우는 프로그램이 처음 작동될 때 부터 미리 메모리에 할당된다.

(일반적으로는 각 요소의 코드가 실행되는 시점에 메모리에 할당된다)

 

void는 메소드의 반환 형식을 말한다.

메소드의 종류도 다양한데, void의 경우에는 비어있다는 뜻이다. 이는 리턴값이 없어도 된다는 소리다.

 

Main은 메소드의 이름이다.

일반적으로 Main은 C#에서 시작을 알려주는 메소드로 반드시 존재해야한다.

 

프로그램이 실행되면 CLR(Common Laguage Runtime)이 프로그램을 훑으며 시작점을 찾는데, 만약에 Main() 메소드가 static으로되어있지 않다면 CLR이 진입점을 찾지 못하게 된다.

즉, Main() 메소드는 C#에서 존재해야하고 static이 수식된 상태여야한다.

 

( string[] args )는 매개변수이다. 메소드 이름 뒤에 ( ) 사이에 집어넣는 값을 매개변수라고 한다.

메소드를 사용할 때 값을 입력받아야하거나 다양한 연산을 진행할 때 매개변수를 활용해야한다.

 

 

 

반응형

댓글