2023. 3. 18. 17:32ㆍ공부/C#
Hello, World! 출력하기
Visual studio를 실행 후, 템플릿에서 콘솔 앱(.NET Framework)을 선택해준다.
(Visual studio 2019 사용중)
만약 콘솔 앱이 보이지 않는다면 Visual studio Installer를 실행하여 수정 -> .NET 데스크톱 개발을 설치해주면 된다.
프로젝트를 무사히 생성한 모습이다. 화면 구성은 사람마다 모두 다를 수 있으며 상단의 [보기] 메뉴를 통해 필요한 창을 끄고 켤 수 있다. 만약 보이지 않는 창이 있다면 [보기] 메뉴를 확인해보자.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello
{
class Program
{
// 프로그램이 실행되는 곳
static void Main(string[] args)
{
}
}
}
아무튼 프로젝트를 생성하니 상당히 복잡해보이는 코드들이 나타났다.
차근차근 살펴보도록 하자.
1. using~
using은 C#의 키워드 중 하나이다. 키워드란 C#의 언어 규격에 미리 정의되어 있는 단어이며 키워드가 사용될 경우, 해당 키워드가 담고있는 명령을 실행하게 된다. 여기서 사용된 using은 단어 뜻에서 유추할 수 있듯 무언가를 사용한다는 의미이다. 그 말은 즉, 위 코드에서 사용 된 using System은 System이란 것을 사용하겠다고 컴파일러에게 알리는 것이다.
여기서 System은 C# 코드가 기본적으로 필요로 하는 클래스를 담고있는 네임스페이스이다.
네임스페이스는 하는 일이 비슷한 클래스, 구조체 등을 하나의 이름으로 묶어주는 역할을 한다. 쉽게 설명하면, System이라는 네임스페이스 안에 C# 코드를 사용할때 기본적으로 필요한 내용들이 들어있다는 것이다.
아래는 C++에서 사용된 네임스페이스의 개념이다. 참고해두면 네임스페이스를 이해하는데 도움이 될 것이다.
https://zheldajdajd.tistory.com/3
[C++] 입출력 함수(cin, cout) / 네임스페이스(namespace)
입출력 함수 (cin, cout) / 네임스페이스 C++에는 이라는 입출력을 위한 표준 라이브러리가 존재한다. C언어에서 printf(), scanf() 등과 같은 함수를 사용하기 위해 를 선언하던 것과 비슷하다고 보면 된
zheldajdajd.tistory.com
2. namespace Hello
앞서 설명한 네임스페이스이다. namespace Hello는 Hello라는 이름의 네임스페이스를 만들고 { }안에 Program이라는 클래스를 담고있다. (네임스페이스의 이름은 프로젝트 명으로 생성된다.)
만약 다른 네임스페이스에서 Program 클래스를 사용하기 위해선 using System처럼 using을 활용해 Hello 네임스페이스를 참조하거나 Hello. Program처럼 클래스가 소속된 네임스페이스와 클래스의 이름을 붙여주어야 한다.
3. class Program
클래스는 C# 프로그램을 구성하는 기본 단위로 C# 프로그램은 최소 하나 이상의 클래스로 이루어진다.
또한 클래스는 데이터와 데이터를 처리하는 기능인 메소드로 이루어져있다.
4. static void Main(string[] args)
Main은 앞서 언급한 메소드이다. 그 중에서도 특별한 메소드라고 할 수 있는데 Main은 프로그램을 시작하면 실행되고 Main이 종료되면 프로그램 또한 종료된다. 따라서 모든 프로그램은 반드시 Main이라는 메소드를 가지고 있어야 한다.
(C/C++의 메인 함수 개념과 유사하다.)
static(한정자) void(반환형식) Main(메소드 이름) (string[] args)(매개변수)
static은 한정자로 메소드나 변수 등을 꾸며주는 역할을 한다. C#프로그램의 요소들은 프로그램이 구동된 후, 해당 코드가 실행되는 시점에 메모리가 할당되지만 static 키워드로 수식된 코드는 프로그램이 처음 구동되는 시점부터 메모리에 할당된다. 만약 Main이 static으로 수식되어 있지 않다면 가장 먼저 실행되어야 하는 Main은 메모리를 할당 받지 못하고 프로그램을 구동시킬 수 없을 것이다.
void는 메소드의 반환 형식을 의미한다. void는 '비어 있는' 이라는 뜻으로 이 메소드는 아무것도 return하지 않는다는 것을 의미한다.
이제 본격적으로 Hello, World! 를 출력해보자.
C#으로 작성된 코드를 실행하기 위해서는 Ctrl+F5로 디버깅 없이 실행을 시키거나 cmd창을 열어 파일 경로를 통해 해당 exe파일을 직접 실행시켜야 한다. 디버깅 후 실행시키는 방법도 있지만 지금은 우선 Ctrl+F5로 실행시켜보자.
(cmd창으로 출력시키기:
윈도우+R => cmd 열기 => (visual studio) 파일 탐색기에서 폴더 열기 후, bin -> Debug 폴더로 이동 및 폴더 경로 복사 =>
cmd창에서 cd를 입력하고 마우크 우클릭으로 경로를 붙여넣기 한 후 Enter로 이동 => exe 파일 실행 (ex) Hello.exe) )
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
<실행결과>
Main 메소드에 Console.WriteLine("Hello, World!"); 라는 코드가 추가되었다.
WriteLine()은 네임스페이스 System으로 묶어진 Console 클래스의 메소드로 출력에 사용된다.
Console.WriteLine("출력할 내용");
Console.Write("출력할 내용");
* 두 메소드 모드 출력의 역할을 하나 WriteLine은 줄바꿈이 포함되어 있다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello,");
Console.WriteLine("World!");
Console.Write("Hello,");
Console.Write("World!");
}
}
}
<실행결과>
'공부 > C#' 카테고리의 다른 글
[C#] foreach (0) | 2023.08.07 |
---|---|
[C#] 연산자(산술연산자, 증가/감소 연산자, 관계 연산자, 조건 연산자) (0) | 2023.04.15 |
[C#] 변수와 데이터타입 (const/enum/Nullable/var) (0) | 2023.04.01 |
[C#] 변수와 데이터 타입 (값형식, 참조형식) (1) | 2023.03.25 |
[C#] C#의 특징 및 C++와의 차이 (0) | 2023.03.18 |