패턴 매칭

선언 패턴 / var 패턴 / discard(_) 패턴 위치(포지셔널) 패턴 – 튜플 / Deconstruct / record 논리 패턴 – and, or, not 리스트 패턴(List Pattern) 응용 재귀(Recursive

2025년 12월 11일
·
0개의 댓글
·

확장 속성 패턴(Extended Property Pattern)

1. 먼저, “속성 패턴(Property Pattern)”이 뭔지부터 속성 패턴은 객체의 속성 값을 기준으로 매칭하는 패턴 매칭 문법이다. if (order is { Status: "Closed", Amount: > 0 }) { Console.WriteLine("종료된 유효 주문"); } 위 코드는 이렇게 읽을 수 있...

2025년 12월 11일
·
0개의 댓글
·

stackalloc

int* p = stackalloc int[10]; Span<int> buffer = stackalloc int[10]; 처음 보면 “이게 대체 뭐지?” 싶은데, 한 번 잡고 가면 스택/힙 구조, 고성능 코드 이해에 꽤 도움이 되는 키워드다. 1. stackalloc 한 줄 정의 stackalloc은 “...

2025년 12월 11일
·
0개의 댓글
·

튜플 / out / dynamic

C# 메서드를 만들다 보면 이런 요구가 자주 나온다. “계산해서 결과 두 개를 한 번에 돌려 주고 싶다.” 예를 들어, 예금 이자를 계산한다고 하면: ① 이자 금액 ② 세금 뗀 후 실수령액 이 두 값을 메서드 하나에서 같이 돌려줘야 한다고 하자. C#에서는 이런 상황을 보통 세 가지 방식으로 처리...

2025년 12월 11일
·
0개의 댓글
·

튜플

1. 튜플이 뭐야? (한 줄 정의) 서로 다른 타입의 값 여러 개를 “작은 묶음”으로 만들어서, 한 변수 / 한 반환값으로 다루게 해주는 타입이다. 예를 들어, 이름: string 나이: int 키: double 이런 정보를 위해 Person 클래스를 굳이 만들지 않고, 그냥 한 번에 묶어서 쓰고 싶다면...

2025년 12월 11일
·
0개의 댓글
·

람다

1. 람다 메서드를 위한 전용 델리게이트 관점 1-1. 람다는 결국 “메서드 조각”이다 람다는 한 줄로 말하면 이렇게 볼 수 있다. 람다식 = 어딘가에 넘겨줄 “작은 메서드 조각”을 코드 안에서 바로 적는 문법 그리고 이 “작은 메서드”를 담는 그릇이 바로 델리게이트 타입(delegate)이다. // 전용 델리게...

2025년 12월 9일
·
0개의 댓글
·

await -> try catch

1. 한 줄 정리부터 await로 기다리는 비동기 메서드에서 예외가 발생하면, 그 예외는 await가 있는 줄에서 터지는 것처럼 동작하고, 그 주변의 try / catch로 잡을 수 있다. 즉, “비동기라서 예외 처리가 완전 다르다”가 아니라, “예외가 await 줄에서 터진다고 생각하면 된다” 정도...

2025년 12월 9일
·
0개의 댓글
·

제네릭 메서드(Generic Method)

1. 제네릭 메서드란 무엇인가? 한 줄로 정리하면: “메서드 단위에서 타입을 외부에서 받는 메서드” 제네릭 클래스는 class MyClass<T>처럼 클래스 전체가 타입 매개변수 T를 공유하지만, 제네릭 메서드는 특정 메서드 하나만 타입 매개변수를 가진다. 기본 형태는 이렇게 생겼다: 반환형 메...

2025년 12월 9일
·
0개의 댓글
·

dynamic vs Reflection, 그리고 var / object와의 관계

Console.WriteLine(json.name);Console.WriteLine(json.address.city);

2025년 12월 9일
·
0개의 댓글
·

다이나믹 예약어

1. dynamic 한 줄 정의 보통 int, string 같은 정적 타입들은: 컴파일 시점에 타입이 확정되고 그 타입 기준으로 “이 멤버를 써도 되는지/안 되는지”를 컴파일러가 다 검사한다 그런데 dynamic은 이렇게 행동한다: “지금 컴파일할 땐 타입 검사하지 말고, 실행할 때 실제 타입을 보고...

2025년 12월 9일
·
0개의 댓글
·

제네릭 : 형식 매개변수 제약조건

1. 형식 매개변수 제약조건이란? 기본적인 제네릭 클래스는 이렇게 생겼다: class MyClass<T> { public T Value; } 여기서 T에는 어떤 타입이든 들어갈 수 있다. var a = new MyClass<int>(); var b = new MyClass<string&g...

2025년 12월 9일
·
0개의 댓글
·

await와 async

1. 한 줄 정의 async 메서드나 람다 선언부에 붙이는 키워드. “이 메서드는 비동기 스타일로 작성되었고, Task 또는 Task<T>를 반환할 거야” 라는 표시. await 메서드/람다 몸통 안에서 쓰는 키워드(연산자). “이 비동기 작업(Task)이 끝날 때까지 비동기적으로 기다렸다가, ...

2025년 12월 3일
·
0개의 댓글
·

비동기 추가

1. .NET BCL에 추가된 async 메서드 1-1. BCL + async 메서드란? 먼저 BCL(Base Class Library)를 한 줄로 정리하면: .NET이 기본으로 제공하는 표준 라이브러리 묶음 (예: System.IO, System.Net.Http, System.Data, System.Threading.Task...

2025년 12월 3일
·
0개의 댓글
·

비동기 - Task, async, await

1. 동기 vs 비동기부터 직관적으로 이해하기 1-1. 동기(synchronous) – 줄 서서 한 줄씩 처리 동기 코드는 “한 줄이 끝나야 다음 줄로 넘어가는 방식”이다. Console.WriteLine("1. 시작"); DoWork(); // 여기서 이 일이 끝날 때까지 멈춰 있음 Console.WriteLine("2. 끝...

2025년 12월 3일
·
0개의 댓글
·

형변환

1. 형변환이란? 형변환(캐스팅) = 어떤 타입의 값을 다른 타입처럼 취급하는 것 예를 들면: int i = 10; double d = i; // int → double 이렇게 int 값을 double 변수에 넣는 것도 형변환이다. C#에서는 크게 이런 종류들이 자주 나온다. 묵시적 형변환 (im...

2025년 12월 2일
·
0개의 댓글
·

partial class

C# partial class 완전 정리 – 왜 쓰고, 어떻게 쓰는지 C# 프로젝트를 하다 보면 갑자기 이런 코드가 보인다. public partial class Form1 : Form { ... } 분명 클래스는 하나인데, 파일이

2025년 12월 1일
·
0개의 댓글
·

스레드(Thread)와 스레드풀(ThreadPool)

1. 스레드(Thread)가 뭐야? 1-1. 회사/직원 비유로 이해하기 먼저 비유부터 해 보자. 프로세스(Process) = 회사 스레드(Thread) = 회사 안에서 일하는 직원들 어떤 프로그램(EXE)을 실행하면, 운영체제 입장에서는 프로세스 하나가 생긴다. 그리고 그 안에서 실제로 일을 하는 단위가...

2025년 12월 1일
·
0개의 댓글
·

가비지컬렉터

1. 가비지 컬렉터가 왜 필요할까? C, C++ 같은 언어에서는 메모리를 직접 관리해야 한다. void* p = malloc(100); // ... free(p); free를 깜빡하면 → 메모리 누수 이미 해제한 메모리를 또 쓰면 → 크래시, 이상한 버그 C#/.NET은 이런 귀찮고 위험한 일을 줄이기 위해 가...

2025년 12월 1일
·
0개의 댓글
·

C#에서 디스크 파일 읽고/쓰기

File.ReadAllText / WriteAllText 같은 간단 방법 FileStream, StreamReader, StreamWriter 같은 스트림 기반 방식 BinaryReader, BinaryWriter를 사용하는 이진 파일 Seek을 이용한 임의 접근(Random Access) ReadAsync, Writ...

2025년 12월 1일
·
0개의 댓글
·

LINQ

1. LINQ 한 줄 정의 LINQ = C# 코드 안에서 컬렉션(배열, List, DB데이터 등)을 SQL처럼 깔끔하게 필터/정렬/변환/집계하는 기능 원래는 이런 식으로 썼던 코드를, int[] numbers = { 3, 5, 4, 2, 6, 7, 8 }; List<int> evens = new List<int&g...

2025년 11월 27일
·
0개의 댓글
·