2023. 10. 19. 16:43ㆍGame Develop/C# Programming
모든 언어를 시작할때 가장 처음 접하는 Hello World를 C#으로 출력하고자 한다.
우리가 처음 C# 프로젝트를 만들고 나오는 코드는 이렇다
다음은 출력 화면이다
이제 하나씩 뜯어가면서 살펴보자.
먼저 뜯어볼 녀석은 당연히 가장 처음 등장하는 요녀석 부터 살펴보자
using : use + ing : 사용한다.
System : 시스템
;(세미 콜론) : 코드 문장의 마침표(.) 역할을 한다.
직역하면 시스템을 사용하겠다는 의미이다.
그렇다면 시스템은 무엇일까?
시스템은 C# 개발자들을 위해 다양한 시스템적 기능들을 구현해 놓은 네임스페이스다.
네임스페이스란?
namespace : name(이름) + space(공간) : 이름공간 - 코드를 구분하는 영역이다.
따라서 우리는 System을 불러와야지만 밑에 코드들을 써내려갈 수 있는 것이다.
다음으로 넘어가서
이 녀석은 우리가 만들 프로젝트의 이름으로 된 네임스페이스를 정의 해 주는 것이다.
'이 안에 우리가 어떤 기능들을 넣을거야 필요하면 가져다 써도 돼' 라는 정도로 이해하면 좋을 것 같다.
internal은 한정자로 쓰이는데 다음에 한정자를 설명하면서 같이 설명하겠다.
class : 변수와 메서드들을 저장하는 일종의 틀이다. 어원은 classification이다.
이 말은 Program이라는 클래스를 만들거야라고 이해하면 된다.
마지막으로
이 부분이 바로 Main 함수가 실행되는 부분이다.
Main 함수란 프로그램의 시작점으로서 프로그램을 실행하면 Main 함수가 실행된다.
args는 프로그램으로 전달되는 인수로서 열어야할 파일의 경로나 옵션 스위치 등이 전달이 된다.
Console.WriteLine()은 System 네임페이스에 있는 Console이라는 클래스에 정의되어 있는 WriteLine()이라는 메서드를 사용하겠다는 의미이다.
WriteLine안에 " "(큰따옴표)사이에 콘솔창에 출력할 내용을 적어주면 된다.
콘솔이란?
Console : 검은색 창. + 창 관련 기능들을 나타낸다.
따라서 위 소스 코드의 내용을 한국말로 해석을 해보면
원인 : 콘솔창에 Hello World!를 출력하고 싶어.
과정:
1. System 네임스페이스를 사용해서 만들어야돼 System을 가져오자!
2. 그러면 우리가 실행할 코드를 넣을 수 있는 Program이라는 네임스페이스도 만들자!
3. 네임스페이스에 Main함수를 실행할 클래스도 만들어서 저장해 줘야돼 Program이란 클래스를 만들자
4. 클래스도 만들었으니까 Main함수를 써서 출력해볼까?
5. System 네임스페이스의 Console 클래스에서 WriteLine()이란 메서드를 통해서 출력할거야!
라고 할 수 있다.
위의 코드대로 쓰면 Console.WriteLine()이라고 필요할때 마다 계속 써주어야 하는 불상사가 일어난다.
하지만, 높으신 분들이 WriteLine()만 쓸 수 있는 방법도 만들어 놓았다.
이 녀석을
이렇게 바꿔주기만 하면 WriteLine()으로만 써도 문제 없이 실행된다.
using 옆에 static이 생기고 System옆에 .Console이 붙은것을 확인할 수 있다.
static은 다음에 설명하도록 하고, 눈치 빠른 사람들은 알아챘겠지만 System에서 Console이란 클래스를 사용할거야 라는 의미이다. 따라서 저렇게 선언만 해주면 WriteLine()만으로도 원하는 문장을 출력할 수 있게 된다.
그렇다면 그냥 System만 써도 쓸 수 있는거아냐? 라고 말하는 사람이 있을 수 있겠다.
하지만, 그건 자칫 위험한 생각이 될수도 있다.
System 네임스페이스안에 무수히 많은 클래스가 있고, 또 그 클래스내에도 무수히 많은 메서드들이 있다.
더군다나 클래스 이름이 같을 순 없겠지만 각 클래스 내의 메서드들의 이름이 같을 경우가 존재한다면 컴퓨터 입장에서 어떤 메서드를 사용해야할지 모르는 등의 여러가지 문제가 발생할 수 있기 때문에 명확하게 알려주어야한다.
실제로도 오류가나는 것을 확인할 수 있다.
참고로 컨텍스트란 지금 쓰고 있는 코드 정도로 생각하면 될거 같다.
이렇게 콘솔창에 Hello World! 출력하기는 마치도록 하겠다.
'Game Develop > C# Programming' 카테고리의 다른 글
C# Practicing(반복문) (1) | 2023.10.21 |
---|---|
C# Practicing(제어문) (1) | 2023.10.21 |
C# Practicing(연산자) (0) | 2023.10.21 |
C# Practicing(데이터 입력하기) (1) | 2023.10.21 |
C# Practicing(다양한 데이터 타입 및 변수 출력하기) (1) | 2023.10.19 |