int x = 10; | 정수 (32비트) |
long l = 10L; | Long (64비트) |
double d = 3.14; | Double (64비트) |
decimal m = 3.14m; | Decimal (128비트) |
bool b = true; | 불리언 |
char c = 'A'; | 문자 (16비트) |
string s = "hello"; | 문자열 |
var x = 10; | 암시적 타입 |
const int MAX = 100; | 상수 |
int? nullable = null; | Nullable 값 타입 |
nullable ?? 0 | Null 병합 |
nullable?.Property | Null 조건부 |
nullable ??= default; | Null 병합 대입 |
object!.Method() | Null 무시 |
Nullable.GetValueOrDefault() | 값 또는 기본값 얻기 |
int[] arr = new int[5]; | 배열 선언 |
int[] arr = { 1, 2, 3 }; | 배열 초기화 |
int[,] matrix = new int[3, 3]; | 2차원 배열 |
int[][] jagged = new int[3][]; | 가변 배열 |
arr.Length | 배열 길이 |
Array.Sort(arr) | 배열 정렬 |
arr[^1] | 끝에서 인덱스 |
arr[1..3] | 범위 연산자 |
public class MyClass { } | 클래스 정의 |
public MyClass() { } | 생성자 |
public MyClass(int x) : this() | 생성자 체이닝 |
~MyClass() { } | 파이널라이저 |
public int Property { get; set; } | 자동 속성 |
public int Property { get; init; } | 초기화 전용 속성 |
public required string Name { get; set; } | 필수 속성 (C# 11) |
class Child : Parent | 클래스 상속 |
class MyClass : IInterface | 인터페이스 구현 |
base.Method() | 부모 메서드 호출 |
virtual void Method() | 가상 메서드 |
override void Method() | 메서드 오버라이드 |
sealed class MyClass | sealed 클래스 |
abstract class MyClass | 추상 클래스 |
interface IMyInterface { } | 인터페이스 정의 |
record Person(string Name, int Age); | 레코드 타입 |
record class Person { } | 레코드 클래스 |
record struct Point(int X, int Y); | 레코드 구조체 |
struct MyStruct { } | 구조체 정의 |
readonly struct Point { } | 읽기 전용 구조체 |
person with { Name = "New" } | with 표현식 |
List<T> | 동적 배열 |
Dictionary<K, V> | 키-값 딕셔너리 |
HashSet<T> | 고유 집합 |
Queue<T> | FIFO 큐 |
Stack<T> | LIFO 스택 |
LinkedList<T> | 연결 리스트 |
SortedSet<T> | 정렬된 고유 집합 |
SortedDictionary<K, V> | 정렬된 딕셔너리 |
list.Add(item) | 항목 추가 |
list.Remove(item) | 항목 제거 |
list.Contains(item) | 포함 확인 |
list.Find(x => x > 0) | 조건으로 찾기 |
list.FindAll(x => x > 0) | 조건으로 모두 찾기 |
list.Sort() | 리스트 정렬 |
list.ForEach(x => Console.WriteLine(x)) | 각 항목에 대해 |
dict.TryGetValue(key, out var value) | 값 얻기 시도 |
from x in collection | from 절 |
where x > 0 | where 필터 |
orderby x.Name | 정렬 |
orderby x descending | 내림차순 정렬 |
select x.Property | 선택 투영 |
select new { x.Name, x.Age } | 익명 타입 |
group x by x.Category | 그룹화 |
join y in col2 on x.Id equals y.Id | 조인 |
.Where(x => x > 0) | 필터 |
.Select(x => x.Name) | 투영 |
.OrderBy(x => x.Name) | 오름차순 정렬 |
.OrderByDescending(x => x) | 내림차순 정렬 |
.GroupBy(x => x.Category) | 그룹화 |
.Join(col2, x => x.Id, y => y.Id, (x, y) => ...) | 컬렉션 조인 |
.SelectMany(x => x.Items) | 중첩 평탄화 |
.Distinct() | 중복 제거 |
.Count() | 요소 수 |
.Sum(x => x.Value) | 값 합계 |
.Average(x => x.Value) | 평균 |
.Min() / .Max() | 최소/최대 |
.First() / .FirstOrDefault() | 첫 번째 요소 |
.Single() / .SingleOrDefault() | 단일 요소 |
.Any(x => x > 0) | 조건 일치 여부 |
.All(x => x > 0) | 모두 일치 여부 |
async Task<T> MethodAsync() | 비동기 메서드 |
await task | 태스크 대기 |
await Task.WhenAll(tasks) | 모두 대기 |
await Task.WhenAny(tasks) | 하나 대기 |
Task.Run(() => { }) | 스레드 풀에서 실행 |
Task.Delay(1000) | 비동기 지연 |
.ConfigureAwait(false) | 동기화 컨텍스트 없음 |
CancellationToken token | 취소 토큰 |
async IAsyncEnumerable<T> Method() | 비동기 열거 가능 |
yield return item; | yield return |
await foreach (var x in stream) | await foreach |
[EnumeratorCancellation] CancellationToken token | 취소 지원 |
is int n | 타입 패턴 |
is { Name: "test" } | 속성 패턴 |
is (int x, int y) | 위치 패턴 |
is > 0 | 관계 패턴 |
is > 0 and < 10 | 논리 패턴 |
is not null | 부정 패턴 |
is [1, 2, ..] | 리스트 패턴 (C# 11) |
x switch { pattern => result } | switch 표현식 |
_ => defaultValue | 무시 패턴 |
int n when n > 0 => ... | when 절 |
case int n: break; | case 패턴 |