Menu
Coddy logo textTech

C# 치트시트

마지막 업데이트

Hello World 및 프로그램 구조

최상위 문(.NET 6부터)을 쓰면 상용구 클래스를 생략할 수 있습니다.

요소코드
최상위 프로그램Console.WriteLine("Hello, World!");
네임스페이스 임포트using System;
고전적인 진입점static void Main(string[] args) { ... }
한 줄 출력Console.WriteLine("text");
한 줄 읽기string s = Console.ReadLine();
문자열 보간Console.WriteLine($"Hi {name}");
주석// line 그리고 /* block */

자료형

타입설명
int32비트 부호 있는 정수
long64비트 부호 있는 정수
double / float부동소수점 숫자
decimal고정밀 십진수 (금액)
booltrue 또는 false
char단일 유니코드 문자
string불변 텍스트
var컴파일러가 타입을 추론
int?널 허용 값 타입

변수

작업문법
선언 및 초기화int x = 5;
타입 추론var name = "Ada";
상수const double Pi = 3.14159;
읽기 전용 필드readonly int id;
널 허용 참조string? maybe = null;
널 병합var y = maybe ?? "default";
널 조건부int? len = text?.Length;

제어 흐름

문(statement)문법
if / elseif (x > 0) { ... } else { ... }
switch 문switch (n) { case 1: ...; break; default: ...; }
switch 표현식var s = n switch { 1 => "one", _ => "other" };
while 반복문while (i < n) { ... }
do-while 반복문do { ... } while (i < n);
for 반복문for (int i = 0; i < n; i++) { ... }
foreach 반복문foreach (var item in list) { ... }
break / continuebreak;는 반복문을 빠져나가고, continue;는 다음 반복으로 건너뜀

메서드

작업문법
메서드 정의int Add(int a, int b) { return a + b; }
표현식 본문int Add(int a, int b) => a + b;
반환값 없음void Greet() { ... }
선택적 매개변수int Pow(int b, int e = 2) { ... }
명명된 인자Pow(b: 2, e: 3);
out 매개변수bool TryParse(string s, out int n) { ... }
정적 메서드static int Square(int x) => x * x;
람다 표현식Func<int, int> f = x => x * 2;

클래스 및 객체 지향(OOP)

작업문법
클래스 정의class Dog { ... }
자동 프로퍼티public string Name { get; set; }
읽기 전용 프로퍼티public int Id { get; }
생성자public Dog(string name) { Name = name; }
객체 생성var d = new Dog("Rex");
상속class Puppy : Dog { ... }
인터페이스interface IRunnable { void Run(); }
메서드 오버라이드public override void Speak() { ... }
레코드 (불변)record Point(int X, int Y);

컬렉션

System.Collections.Generic의 제네릭 컬렉션.

타입사용법 및 예시
List<T>동적 배열: list.Add(1); list.Count;
Dictionary<K, V>키-값: dict["a"] = 1; dict.ContainsKey("a");
HashSet<T>고유 값: set.Add(5); set.Contains(5);
Queue<T>FIFO: q.Enqueue(x); q.Dequeue();
Stack<T>LIFO: s.Push(x); s.Pop();
배열int[] nums = { 1, 2, 3 };
컬렉션 초기화자var l = new List<int> { 1, 2, 3 };
딕셔너리 순회foreach (var kv in dict) { kv.Key; kv.Value; }

LINQ

컬렉션을 유려하게 쿼리합니다. System.Linq에서 가져옵니다.

작업문법
필터nums.Where(n => n > 0)
투영 / 매핑nums.Select(n => n * 2)
정렬nums.OrderBy(n => n) / OrderByDescending(...)
첫 일치nums.First(n => n > 5) / FirstOrDefault(...)
any / allnums.Any(n => n < 0) / nums.All(n => n > 0)
일치 개수 세기nums.Count(n => n > 0)
집계nums.Sum(), nums.Max(), nums.Average()
그룹화items.GroupBy(i => i.Category)
구체화.ToList() / .ToArray()

자주 쓰는 패턴 (프로퍼티, async)

패턴문법
async 메서드async Task<int> GetAsync() { ... }
태스크 awaitvar result = await GetAsync();
try / catchtry { ... } catch (Exception e) { ... }
finallyfinally { ... }는 항상 실행됨
using (자원 해제)using var file = File.OpenRead(path);
문자열 서식 지정$"Total: {amount:C}"
제네릭 클래스class Box<T> { public T Value; }
패턴 매칭if (obj is Dog d) { d.Bark(); }

가장 자주 쓰는 C# 문법, 컬렉션, LINQ 쿼리를 한 페이지에 담았습니다. 이 C# 치트시트는 C#를 작성하기 위한 빠른 참조 자료입니다 - 자료형, 제어 흐름, 클래스, List/Dictionary 컬렉션, LINQ, 그리고 관용적인 .NET 코드를 정의하는 프로퍼티와 async 패턴을 다룹니다.

여기 나오는 모든 내용은 .NET의 표준 C#이며 dotnet CLI로 실행됩니다. 필요한 것을 복사하거나, C# 플레이그라운드에서 어떤 코드든 바로 실행해 보세요 - SDK를 설치할 필요가 없습니다.

C# 치트시트 자주 묻는 질문

이 C# 치트시트는 무료인가요?
네. 이 C# 치트시트는 완전히 무료이며 회원 가입이 필요 없습니다. 즐겨찾기에 추가해 두고 문법, 컬렉션, LINQ 메서드를 찾아봐야 할 때마다 다시 방문하세요.
C#에서 값 타입과 참조 타입의 차이는 무엇인가요?
값 타입(int, double, bool, struct, enum)은 데이터를 직접 담으며, 대입하거나 메서드에 전달할 때 복사됩니다 - 복사본을 바꿔도 원본에는 영향이 없습니다. 참조 타입(class, string, 배열, List<T>)은 힙에 있는 데이터에 대한 참조를 담으므로, 두 변수가 같은 객체를 가리킬 수 있고 한쪽을 통한 변경이 다른 쪽에도 보입니다. string은 참조 타입이지만 불변처럼 동작합니다.
LINQ란 무엇이며 언제 사용해야 하나요?
LINQ(Language Integrated Query)는 Where, Select, OrderBy 같은 메서드 집합으로, 수동 반복문 대신 읽기 쉽고 연결 가능한 호출로 컬렉션을 필터링, 변환, 집계할 수 있게 해줍니다. 필터링되거나 투영된 리스트를 만들기 위해 반복문을 쓰게 될 상황이라면 언제든 사용하세요 - 간결하며 ToList()를 호출하거나 순회할 때까지 지연 평가됩니다.
C#를 온라인에서 연습할 수 있나요?
네. C# 플레이그라운드를 열어 이 치트시트의 어떤 코드든 브라우저에서 실행해 보세요 - SDK를 설치할 필요가 없습니다. 체계적으로 배우고 싶다면, Coddy의 무료 인터랙티브 C# 강좌가 변수와 반복문부터 클래스, 컬렉션, LINQ까지 단계별로 안내합니다.
이 치트시트는 초보자에게 적합한가요?
네. 가장 흔한 구성 요소(타입, 제어 흐름, 메서드)부터 고급 요소(LINQ, async, 제네릭)까지 순서대로 정리되어 있어, 첫날부터 상단 섹션을 사용하고 점차 나머지로 넓혀갈 수 있습니다.
Coddy programming languages illustration

Coddy로 C# 배우기

시작하기