C#은 어디에 쓰이는 언어인가
C#은 마이크로소프트가 만든 범용 프로그래밍 언어입니다. "범용"이라는 말은 한 분야에만 묶이지 않고 여러 종류의 프로그램을 만들 수 있다는 뜻입니다. C#은 특히 .NET이라는 실행 환경과 함께 사용됩니다.
C#으로 만들 수 있는 대표적인 프로그램은 다음과 같습니다.
데스크톱 앱: Windows에서 실행되는 업무용 프로그램, 관리 도구
웹 서비스: ASP.NET Core를 사용한 웹 사이트, API 서버
게임: Unity 엔진을 사용한 2D·3D 게임
클라우드 프로그램: Azure 같은 클라우드에서 실행되는 백엔드 서비스
모바일 앱: .NET MAUI를 사용한 iOS·Android 앱
콘솔 프로그램: 터미널에서 실행되는 작은 자동화 도구
이 책에서는 가장 단순한 콘솔 프로그램부터 시작합니다. 화면 버튼이나 웹 서버를 먼저 다루지 않는 이유는 C# 문법 자체에 집중하기 위해서입니다. 콘솔 프로그램은 입력, 출력, 변수, 조건문, 반복문 같은 기본기를 배우기에 가장 좋습니다.
AI 생성 이미지
C# 코드가 실행되기까지
초보자가 헷갈리기 쉬운 점은 "C#을 설치한다"는 표현입니다. 실제로는 보통 .NET SDK를 설치합니다. SDK 안에는 C# 프로그램을 만들고 실행하는 데 필요한 도구가 들어 있습니다.
흐름을 단순하게 보면 다음과 같습니다.
개발자가
.cs파일에 C# 코드를 작성한다.컴파일러가 C# 코드를 컴퓨터가 실행할 수 있는 형태로 변환한다.
.NET 런타임이 변환된 프로그램을 실행한다.
터미널이나 앱 화면에 결과가 나타난다.
여기서 중요한 용어를 정리해 봅시다.
| 용어 | 뜻 |
|---|---|
| C# | 우리가 작성하는 프로그래밍 언어 |
| .NET | C# 프로그램을 만들고 실행하는 플랫폼 |
| SDK | 개발 도구 모음. 만들기, 빌드, 실행 도구가 포함됨 |
| 런타임 | 이미 만들어진 .NET 프로그램을 실행하는 구성 요소 |
| 컴파일러 | C# 코드를 실행 가능한 형태로 바꾸는 도구 |
| CLI | 터미널에서 dotnet 명령으로 사용하는 명령줄 도구 |
Microsoft 문서에서는 .NET CLI를 .NET 앱을 개발, 빌드, 실행, 게시하는 크로스 플랫폼 도구 체인으로 설명합니다. 이 CLI는 .NET SDK에 포함되어 있습니다.1
SDK와 런타임의 차이도 알아야 합니다. SDK는 프로그램을 만들 때 필요하고, 런타임은 프로그램을 실행할 때 필요합니다. 개발자는 보통 SDK를 설치합니다. SDK를 설치하면 해당 버전의 런타임도 함께 제공되므로 초보자는 SDK만 설치하면 됩니다.2
개발 환경 선택하기
C#을 배우려면 코드를 작성할 편집기와 실행 도구가 필요합니다. 대표 선택지는 세 가지입니다.
Visual Studio
Visual Studio는 C# 개발에 필요한 기능이 많이 들어 있는 통합 개발 환경입니다. 프로젝트 생성, 코드 자동 완성, 디버깅, 테스트 실행, NuGet 패키지 관리 등을 한곳에서 처리할 수 있습니다.
추천 상황은 다음과 같습니다.
Windows를 사용한다.
설치 용량이 커도 괜찮다.
버튼을 눌러 프로젝트를 만들고 실행하고 싶다.
나중에 데스크톱 앱이나 웹 앱까지 자연스럽게 확장하고 싶다.
Visual Studio는 편리하지만 처음에는 메뉴가 많아 복잡하게 느껴질 수 있습니다.
Visual Studio Code
Visual Studio Code, 줄여서 VS Code는 가벼운 코드 편집기입니다. C#을 편하게 쓰려면 C# Dev Kit 확장과 .NET SDK가 필요합니다. 공식 가이드도 VS Code에서 C#을 시작할 때 VS Code, C# Dev Kit, .NET SDK를 함께 안내합니다.3
추천 상황은 다음과 같습니다.
Windows, macOS, Linux 중 어떤 환경이든 사용한다.
가벼운 편집기를 선호한다.
터미널 명령어에 익숙해지고 싶다.
이 책의 예제를
dotnet명령으로 직접 실행하고 싶다.
이 책의 설명은 주로 VS Code와 터미널 명령을 기준으로 합니다. Visual Studio를 사용해도 C# 문법은 같습니다.
GitHub Codespaces
GitHub Codespaces는 웹 브라우저에서 개발 환경을 여는 방식입니다. 내 컴퓨터에 SDK나 편집기를 직접 설치하지 않아도 클라우드 환경에서 코드를 작성하고 실행할 수 있습니다.
추천 상황은 다음과 같습니다.
학교나 공용 PC처럼 설치 권한이 제한된 환경이다.
여러 컴퓨터에서 같은 개발 환경을 쓰고 싶다.
GitHub 사용에 익숙하거나 앞으로 익숙해지고 싶다.
단점도 있습니다. 인터넷 연결이 필요하고, 사용량 제한이나 비용 정책을 확인해야 합니다. 처음 C#을 배우는 단계라면 내 컴퓨터에 .NET SDK와 VS Code를 설치하는 방식이 가장 단순합니다.
첫 콘솔 프로젝트 만들기
이제 실제로 프로젝트를 만들어 봅시다. 터미널을 열고 작업할 폴더로 이동합니다. 예를 들어 csharp-study라는 폴더를 만들 수 있습니다.
mkdir csharp-study
cd csharp-study설치가 잘 되었는지 확인합니다.
dotnet --version실행 결과는 설치한 버전에 따라 다릅니다.
10.0.300버전 숫자가 나온다면 .NET SDK가 설치된 것입니다. 이제 콘솔 앱을 만듭니다.
dotnet new console -n HelloCSharp이 명령은 HelloCSharp라는 새 콘솔 프로젝트를 만듭니다. 폴더로 이동합니다.
cd HelloCSharp프로젝트를 빌드합니다.
dotnet build빌드는 코드를 검사하고 실행할 수 있는 형태로 준비하는 과정입니다. 문제가 없다면 대략 다음과 같은 메시지가 나옵니다.
Build succeeded.
0 Warning(s)
0 Error(s)이제 실행합니다.
dotnet run기본 템플릿의 실행 결과는 다음과 같습니다.
Hello, World!방금 사용한 세 명령은 앞으로 자주 보게 됩니다.
| 명령 | 역할 |
|---|---|
dotnet new | 새 프로젝트를 만든다 |
dotnet build | 프로젝트를 빌드한다 |
dotnet run | 프로젝트를 실행한다 |
처음에는 이 명령을 모두 외울 필요는 없습니다. 다만 "새로 만들기 → 빌드하기 → 실행하기"라는 흐름은 기억해 두세요.
파일 구조 살펴보기
HelloCSharp 폴더 안에는 보통 다음과 같은 파일이 있습니다.
HelloCSharp/
├─ HelloCSharp.csproj
├─ Program.cs
├─ bin/
└─ obj/각 항목의 의미를 초보자 관점에서 해석해 봅시다.
Program.cs
Program.cs는 C# 코드가 들어 있는 파일입니다. 기본 내용은 다음과 비슷합니다.
Console.WriteLine("Hello, World!");Console.WriteLine은 콘솔 화면에 글자를 출력하는 명령입니다. 괄호 안에 있는 문자열이 화면에 나타납니다.
Hello, World!최신 C#에서는 이렇게 짧게 시작할 수 있습니다. 예전 C# 교재를 보면 class Program, static void Main 같은 코드가 먼저 나올 수 있습니다. 틀린 방식은 아닙니다. 다만 최신 템플릿은 초보자가 핵심 코드부터 볼 수 있도록 더 간단한 형태를 사용합니다.
HelloCSharp.csproj
.csproj 파일은 프로젝트 파일입니다. 이 프로젝트가 어떤 .NET 버전을 대상으로 하는지, 어떤 패키지를 사용하는지 같은 설정이 들어 있습니다.
예시는 다음과 비슷합니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>여기서 TargetFramework는 이 프로젝트가 어떤 .NET 버전을 기준으로 만들어지는지 나타냅니다. 여러분의 환경에 따라 net9.0, net10.0처럼 다르게 보일 수 있습니다. 지금은 "프로젝트 설정 파일이구나" 정도만 이해하면 충분합니다.
bin과 obj 폴더
bin과 obj 폴더는 빌드 과정에서 자동으로 만들어집니다.
obj: 빌드 중간 결과가 저장되는 폴더bin: 최종 실행 파일과 관련 파일이 저장되는 폴더
처음 배울 때 이 폴더를 직접 수정할 일은 거의 없습니다. 문제가 생겼을 때 삭제 후 다시 빌드하면 재생성되기도 합니다.
솔루션, 프로젝트, 네임스페이스
C#을 배우다 보면 솔루션, 프로젝트, 네임스페이스라는 말을 자주 만납니다.
프로젝트는 하나의 프로그램 또는 라이브러리를 만들기 위한 단위입니다. 지금 만든 HelloCSharp가 프로젝트입니다.
솔루션은 여러 프로젝트를 묶는 상위 단위입니다. 작은 콘솔 앱 하나만 만들 때는 솔루션을 의식하지 않아도 됩니다. 하지만 실제 개발에서는 웹 프로젝트, 테스트 프로젝트, 공통 라이브러리 프로젝트를 하나의 솔루션으로 묶는 경우가 많습니다.
네임스페이스는 이름 충돌을 막기 위한 묶음입니다. 예를 들어 여러 사람이 User라는 클래스를 만들 수 있습니다. 이때 네임스페이스를 사용하면 MyApp.Models.User처럼 어느 영역의 User인지 구분할 수 있습니다.
초보 단계에서는 이렇게 기억하면 됩니다.
솔루션: 프로젝트들을 담는 큰 상자
프로젝트: 하나의 앱이나 라이브러리를 만드는 상자
네임스페이스: 코드 이름을 정리하는 주소
파일: 실제 C# 코드가 적힌 문서흔한 실수
dotnet 명령을 찾을 수 없다고 나올 때
다음과 같은 메시지가 나올 수 있습니다.
'dotnet' is not recognized as an internal or external command대부분은 .NET SDK가 설치되지 않았거나, 설치 후 터미널을 새로 열지 않아서 생깁니다. 새 터미널을 열고 다시 실행해 보세요. 그래도 안 되면 컴퓨터를 재시작하거나 SDK 설치를 확인합니다.
프로젝트 폴더 밖에서 실행할 때
dotnet run은 보통 .csproj 파일이 있는 폴더에서 실행합니다. 만약 상위 폴더에서 실행하면 어떤 프로젝트를 실행해야 하는지 찾지 못할 수 있습니다.
cd HelloCSharp
dotnet run현재 폴더에 .csproj 파일이 있는지 확인하는 습관을 들이면 좋습니다.
SDK 대신 런타임만 설치할 때
런타임만 설치하면 이미 만들어진 앱은 실행할 수 있지만 새 C# 프로젝트를 만들고 빌드하는 데 필요한 도구가 부족합니다. 학습자는 .NET SDK를 설치해야 합니다.
작은 연습 문제
MyFirstApp이라는 콘솔 프로젝트를 새로 만들어 보세요.Program.cs의 문장을 다음처럼 바꾸고 실행해 보세요.
Console.WriteLine("C# 학습을 시작합니다.");예상 실행 결과는 다음과 같습니다.
C# 학습을 시작합니다.dotnet build와dotnet run을 각각 실행해 보고, 두 명령의 차이를 한 문장으로 적어 보세요.프로젝트 폴더 안에서
.csproj파일을 열어TargetFramework값을 확인해 보세요.
이번 장의 목표는 C# 문법을 많이 외우는 것이 아닙니다. C# 코드가 .NET SDK, 컴파일러, 런타임을 거쳐 실행된다는 큰 흐름을 이해하는 것입니다. 이 흐름을 알고 나면 다음 장에서 첫 프로그램의 구조를 훨씬 편하게 읽을 수 있습니다.
참고
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.