**C#**은 Microsoft가 만든 현대적이고 정적 타입을 사용하는 객체지향 언어입니다. .NET은 C#이 실행되는 플랫폼으로, 런타임과 방대한 표준 라이브러리, 그리고 다양한 종류의 애플리케이션을 만들기 위한 도구를 제공합니다. 최신 .NET은 크로스 플랫폼이며 오픈 소스이고 빠릅니다.
간단한 C# 프로그램
using System;
Console.WriteLine();
=> a + b;
✓ 정적 타입 — 컴파일 타임에 타입 검사(오류를 일찍 발견)
✓ 객체지향 — 클래스, 인터페이스, 상속(함수형 기능도 지원)
✓ 현대적이고 표현력 풍부 — LINQ, async/await, 패턴 매칭, record, nullable 참조
✓ 메모리 관리 — garbage collection(수동 해제 불필요)
✓ 컴파일 — IL(중간 언어)로 컴파일 후 런타임에 네이티브로 JIT 컴파일
✓ CLR(공용 언어 런타임) — 코드 실행, 메모리 관리(GC), IL의 JIT 컴파일
✓ 기본 클래스 라이브러리(BCL) — 거대한 표준 라이브러리(컬렉션, IO, 네트워킹, ...)
✓ 크로스 플랫폼 — 최신 .NET은 Windows, Linux, macOS에서 실행(오픈 소스)
✓ 하나의 플랫폼, 여러 종류의 앱(아래 참고)
✓ 웹 앱 및 API — ASP.NET Core(고성능 웹 프레임워크)
✓ 데스크톱 — WPF, WinForms, MAUI(모바일도 가능)
✓ 클라우드 서비스 및 마이크로서비스, 게임(Unity가 C# 사용), IoT, ML.NET
.NET Framework(레거시) → Windows 전용, 원조
최신 .NET(Core / .NET 5+) → 크로스 플랫폼, 오픈 소스, 더 빠름 — 현재의 표준
C#과 .NET을 이해하는 것은 Microsoft 생태계 및 그 너머에서의 개발을 위한 기초적인 배경 지식입니다.
핵심은 다음과 같습니다. **C#**은 현대적이고 정적 타입을 사용하며 객체지향적(그리고 점점 함수형 특성도 갖추는)인 언어로, 표현력이 풍부하고 기능이 다양합니다(LINQ, async/await, record, 패턴 매칭). 반면 .NET은 C#이 실행되는 강력한 플랫폼으로, CLR 런타임(garbage collection과 JIT 컴파일 포함), 방대한 표준 라이브러리, 그리고 사실상 모든 종류의 애플리케이션(ASP.NET Core를 사용한 웹 API, 데스크톱, 모바일, 클라우드, Unity를 통한 게임)을 만들기 위한 도구를 제공합니다.
중요한 점은 최신 .NET(Core / .NET 5+)이 크로스 플랫폼이고 오픈 소스이며 고성능인 플랫폼으로 진화했다는 것입니다(Windows 전용이었던 레거시 .NET Framework로부터의 큰 변화). 이로 인해 C#은 Windows를 훨씬 넘어서 의미를 갖게 되었습니다.
C#의 본질, .NET 플랫폼의 구성 요소와 범위, 그리고 최신 버전과 레거시의 차이를 이해하는 것은 이 생태계에서 일하는 데 필요한 다른 모든 것의 틀을 잡아 줍니다. 또한 C#/.NET이 엔터프라이즈 애플리케이션, 고성능 웹 서비스, 그 외 여러 영역에서 주요한 선택지인 이유도 설명해 줍니다.