Visual Studio를 실행하고 C# 프로젝트를 생성하면 코딩 창에 기본적으로 코딩되어 출력됩니다. 이와 같이 C#을 프로그래밍할 때 기본적인 구조가 어떻게 되는지 알아보고자 합니다.
1. Visual Studio 프로젝트 생성
C# 프로그래밍 기본 구조 알아보기 I - Visual Studio 다운로드 및 실행
위의 글에서 Visual Studio를 다운로드 하는 방법과 프로젝트 및 솔루션 생성 등에 대해 알아봤습니다. Visual Studio를 실행하고 프로젝트를 생성하면 아래와 같은 코딩이 된 창이 출력됩니다.
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Visual Studio 2019는 기본적으로 Hello World! 를 화면에 출력하는 코딩을 작성해서 화면에 보여줍니다.
자동으로 생성된 코딩 내용을 보면 C# 프로그래밍 기본적인 구조는 크게 using과 namespace로 구성되어 있습니다.
첫 줄 using System;은 네임 스페이스 System을 사용하겠다는 의미입니다. 네임 스페이스 안에는 클래스들이 포함되어 있어서 네임 스페이스 System의 클래스들을 가져다 쓰겠다고 선언하는 것입니다.
그 다음 문장인 namespace ConsoleApp2는 ConsoleApp2라는 네임 스페이스를 만들겠다고 선언하는 것입니다. 그리고, 이 네임스페이스 안에는 Main() 함수가 포함되어 있습니다.
이와 같이 C#은 using과 namespace로 구성되어 있음을 자동으로 생성된 코딩을 통해 확인하실 수 있습니다. 위의 코딩은 바로 디버깅하시면 화면에 Hello World!라고 출력되는 것을 보실 수 있습니다.
만약, using System;이 없다면 Console.WriteLine("Hello World!");는 아래와 같이 수정되어야 디버깅이 됩니다.
System.Console.WriteLine("Hello World!");
using을 사용하여 네임스페이스 사용을 선언함으로써 만들려는 프로그램 내에서 함수 등을 사용할 때 그 함수 등이 소속된 네임스페이스 이름을 일일이 타이핑하지 않아도 되게 해 준다는 것입니다. 코딩하는 데는 많은 도움이 되겠지요... 조금이라도 타이핑 양이 줄어드니까요...^^
2. Main() 함수
C#으로 프로그래밍 할때 하나 이상의 클래스를 반드시 정의해야 합니다. 이는 C/C++과 마찬가지로 프로그램의 실행은 이 Main() 함수의 내용에 따라 실행되기 때문입니다. 그리고 C#에서는 Main() 함수가 네임스페이스 내에 있는 클래스에 포함되어 있기 때문에 반드시 하나 이상의 클래스가 정의되어야 한다는 내용은 바로 이해되실 거라 생각합니다.
C#에서 Main() 함수를 선언하는 방식은 다음과 같습니다.
① static void Main( )
{
실행 코드
}
② static void Main(string[] args)
{
실행 코드
}
또한, void 형이 아닌 형식으로도 선언할 수 있습니다.
① static int Main( )
{
실행 코드
return 0;
}
② static int Main(string[] args)
{
실행 코드
return 0;
}
반드시 리턴값이 있어야 한다는 것을 주의하시기 바랍니다.
3. 가비지 컬렉터 (Garbage Collector)
C#에서는 포인터를 쓰지 않습니다. C/C++ 프로그래밍을 할 때 항상 신경 써야 할 것 중에 하나가 메모리 관리입니다. 특히 동적 할당 new를 사용하여 메모리를 할당한 경우 동적 할당된 메모리를 반드시 해제하는 명령도 입력해 주어야 합니다. 그렇지 않으면 프로그램이 종료되어도 할당된 동적 메모리는 그대로 메모리를 차지하고 있기 때문입니다. 그런데 C#은 이 메모리 관리를 가비지 컬렉터 (Garbage Collector)에서 해줍니다. 곧 프로그램 작성자는 이제 메모리 관리를 신경 쓰지 않아도 된다는 것입니다. 이름에서 알 수 있듯이 사용하지 않는 메모리를 쓰레기로 표현하고 이 쓰레기를 모아서 제거해준다는 의미를 이름으로도 짐작할 수 있습니다.
작동하는 방식은 .NET 애플리케이션이 실행되면 JIT 컴파일러는 프로그램에서 할당한 메모리 위치들을 찾습니다. CLR은 찾아낸 할당된 메모리 위치 목록들을 관리합니다. 가비지 컬렉터는 CLR이 관리하는 목록들 중에서 사용하지 않는 메모리 위치를 찾아내 메모리 할당을 해제하는 것입니다.
하지만 가비지 컬렉터만 믿고 메모리 사용을 남용하지 마시고 객체 사용을 재활용하면서 C# 프로그래밍하시길 바랍니다.
'Programming > C#' 카테고리의 다른 글
C# 연산자 II - 문자열결합연산자, 관계연산자 (0) | 2021.09.22 |
---|---|
C# 연산자 I - 산술연산자, 증가연산자, 감소연산자 (0) | 2021.09.22 |
C# 프로그래밍 기본 구조 알아보기 I - Visual Studio 다운로드 및 실행 (0) | 2021.09.16 |
변수의 데이터 형식 변환하는 방법 알아보기 (0) | 2021.09.04 |
C# 데이터 형식에 대해 알아보기 (0) | 2021.09.02 |