Skip to main content
Summary

C#은 어디에 쓰이는 언어인가

C#은 마이크로소프트가 만든 범용 프로그래밍 언어입니다. "범용"이라는 말은 한 분야에만 묶이지 않고 여러 종류의 프로그램을 만들 수 있다는 뜻입니다. C#은 특히 .NET이라는 실행 환경과 함께 사용됩니다.

C#으로 만들 수 있는 대표적인 프로그램은 다음과 같습니다.

  • 데스크톱 앱: Windows에서 실행되는 업무용 프로그램, 관리 도구

  • 웹 서비스: ASP.NET Core를 사용한 웹 사이트, API 서버

  • 게임: Unity 엔진을 사용한 2D·3D 게임

  • 클라우드 프로그램: Azure 같은 클라우드에서 실행되는 백엔드 서비스

  • 모바일 앱: .NET MAUI를 사용한 iOS·Android 앱

  • 콘솔 프로그램: 터미널에서 실행되는 작은 자동화 도구

이 책에서는 가장 단순한 콘솔 프로그램부터 시작합니다. 화면 버튼이나 웹 서버를 먼저 다루지 않는 이유는 C# 문법 자체에 집중하기 위해서입니다. 콘솔 프로그램은 입력, 출력, 변수, 조건문, 반복문 같은 기본기를 배우기에 가장 좋습니다.

C#과 .NET 개발 환경 이해하기AI 생성 이미지

C# 코드가 실행되기까지

초보자가 헷갈리기 쉬운 점은 "C#을 설치한다"는 표현입니다. 실제로는 보통 .NET SDK를 설치합니다. SDK 안에는 C# 프로그램을 만들고 실행하는 데 필요한 도구가 들어 있습니다.

흐름을 단순하게 보면 다음과 같습니다.

  1. 개발자가 .cs 파일에 C# 코드를 작성한다.

  2. 컴파일러가 C# 코드를 컴퓨터가 실행할 수 있는 형태로 변환한다.

  3. .NET 런타임이 변환된 프로그램을 실행한다.

  4. 터미널이나 앱 화면에 결과가 나타난다.

여기서 중요한 용어를 정리해 봅시다.

용어뜻
C#우리가 작성하는 프로그래밍 언어
.NETC# 프로그램을 만들고 실행하는 플랫폼
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를 설치해야 합니다.

작은 연습 문제

  1. MyFirstApp이라는 콘솔 프로젝트를 새로 만들어 보세요.

  2. Program.cs의 문장을 다음처럼 바꾸고 실행해 보세요.

Console.WriteLine("C# 학습을 시작합니다.");

예상 실행 결과는 다음과 같습니다.

C# 학습을 시작합니다.
  1. dotnet build와 dotnet run을 각각 실행해 보고, 두 명령의 차이를 한 문장으로 적어 보세요.

  2. 프로젝트 폴더 안에서 .csproj 파일을 열어 TargetFramework 값을 확인해 보세요.

이번 장의 목표는 C# 문법을 많이 외우는 것이 아닙니다. C# 코드가 .NET SDK, 컴파일러, 런타임을 거쳐 실행된다는 큰 흐름을 이해하는 것입니다. 이 흐름을 알고 나면 다음 장에서 첫 프로그램의 구조를 훨씬 편하게 읽을 수 있습니다.

참고

1.NET CLI | Microsoft Learn

2Install .NET on Windows - .NET | Microsoft Learn

3Getting Started with C# in VS Code

책 목록

C# 학습: 기초 문법부터 작은 프로젝트까지

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기