C# 50

C# 기초부터 고급까지 Chapter 3.7. 커스텀 Attributes, AOP 기법 적용

📘 Chapter 3.7: 커스텀 Attributes, AOP 기법 적용✅ 이 챕터에서 배울 것 Attribute가 뭔가? 커스텀 Attribute 만들기 리플렉션으로 Attribute 읽기 AOP 개념 및 대표 예제 실무 적용 사례: 로깅, 검증, 권한 체크 PostSharp, Castle DynamicProxy, Source Generator 간단 소개1️⃣ Attribute란?"코드에 부착할 수 있는 주석 + 실행 메타 정보"C#에선 [AttributeName] 형태로 클래스, 메서드, 속성 등에 붙일 수 있다.✅ 예시[Obsolete("이 메서드는 쓰지 마세요!")]public void OldMethod() { }✅ 컴파일러가 "이거 쓰지 마라~" 라고 경고 줌💡 어디에 쓰이냐고? ..

C# 2025.05.11

C# 기초부터 고급까지 Chapter 3.6. .NET 메모리 관리 이해 – GC 동작 원리

📘 Chapter 3.6: .NET 메모리 관리 이해 – GC 동작 원리✅ 이 챕터에서 배울 것 .NET의 메모리 구조 (스택 vs 힙) GC가 왜 필요한가? GC의 세대별 구조 (Gen 0, 1, 2) 객체 수명과 Promotion Large Object Heap(LOH) 개념 Finalizer, IDisposable 차이 성능 최적화 팁1️⃣ .NET의 메모리 구조 영역역할 스택(Stack)지역 변수, 메서드 호출, 빠름 힙(Heap)new로 만든 객체, GC가 관리 int x = 10; // 스택에 저장var list = new List(); // 힙에 저장2️⃣ GC란?“사용 안 하는 객체는 내가 알아서 치워줄게”GC는 메모..

C# 2025.05.10

C# 기초부터 고급까지 Chapter 3.5. 코드 분석 및 성능 측정 도구 사용 (BenchmarkDotNet 등)

📘 Chapter 3.5: 코드 분석 및 성능 측정 도구 사용 (BenchmarkDotNet 등)✅ 이 챕터에서 배울 것 왜 성능 측정이 중요한가 BenchmarkDotNet 사용법 (실전 예제 포함) 간단한 Stopwatch 성능 측정 방법 GC, Memory 관련 측정 실무 상황에서 벤치마크 전략 예: for vs foreach, StringBuilder vs +1️⃣ 왜 성능 측정이 중요한가? "느릴 것 같아서 바꿨는데, 더 느려짐" → 실무에서 흔한 일이다✅ 체감 성능 ≠ 실제 성능 컴파일러 최적화 GC 개입 JIT 예열 등으로 오차 생김→ 그러니까 정확한 측정 도구로 정량 분석해야 된다!2️⃣ BenchmarkDotNet – .NET 성능 측정의 정석https://bench..

C# 2025.05.07

C# 기초부터 고급까지 Chapter 3.4. 고급 LINQ 커스터마이징 & 쿼리 최적화

📘 Chapter 3.4: 고급 LINQ 커스터마이징 & 쿼리 최적화✅ 이번 챕터 목표 LINQ의 내부 작동 방식 이해 쿼리식 vs 메서드 체이닝 차이 IEnumerable vs IQueryable 차이 Select, Where 커스터마이징 방법 실무 성능 개선 전략 (지연 실행, ToList, Projection 등)1️⃣ LINQ의 기본 개념 다시 정리LINQ는 2가지 방식으로 쓸 수 있다:✅ 쿼리식 (Query Syntax)var result = from x in list where x > 10 select x * 2;✅ 메서드 체이닝 (Method Syntax)var result = list.Where(x => x > 10) ..

C# 2025.05.06

C# 기초부터 고급까지 Chapter 3.3. Expression Tree로 컴파일 타임 코드 생성

📘 Chapter 3.3: Expression Tree로 컴파일 타임 코드 생성✅ 이 챕터에서 배울 것 Expression Tree란 무엇인가? Func와 Expression> 차이 동적으로 조건 쿼리 만들기 메서드 호출도 Expression으로 표현 가능 실전 예제 – 동적 필터링, 간단한 DSL 리플렉션보다 빠른 이유와 주의점1️⃣ Expression Tree란?C# 코드를 트리 형태로 표현한 객체 구조Expression> expr = x => x + 1;이 코드는 실제로 이렇게 분해된다: 파라미터 x 연산자 + 상수 1→ 전부 트리 형태로 분해돼서 저장됨📦 표현식 구조 살펴보기Expression> expr = x => x + 1;Console.WriteLine(expr.Body)..

C# 2025.05.05

C# 기초부터 고급까지 Chapter 3.2. Reflection & Dynamic Type – 런타임 메타프로그래밍

📘 Chapter 3.2: Reflection & Dynamic Type – 런타임 메타프로그래밍✅ 이 챕터에서 배울 것 리플렉션(Reflection)이란? 어떤 상황에서 쓰는가 (실무 사례) Type, PropertyInfo, MethodInfo 사용법 dynamic 키워드와 ExpandoObject 실전 시나리오 예제 (DTO ↔ Entity, 자동 매핑 등) 성능 이슈와 개선 전략1️⃣ 리플렉션(Reflection)이란?실행 중인 객체, 타입, 메서드, 속성 정보를 코드에서 직접 들여다보고 조작하는 기술C#에서는 System.Reflection 네임스페이스를 통해 사용한다.📦 간단 예제Type type = typeof(string);Console.WriteLine(type.FullNa..

C# 2025.05.05

C# 기초부터 고급까지 Chapter 3.1. Span , Memory , Unsafe – 퍼포먼스 챙기는 C# 코드

📘 Chapter 3.1: Span , Memory , Unsafe – 퍼포먼스 챙기는 C# 코드✅ 이 챕터에서 배울 것 GC 힙이 아닌 스택 메모리 직접 다루기 Span / Memory 차이와 쓰임 stackalloc, ref struct의 역할 unsafe 코드로 포인터 직접 다루는 법 안전성과 성능의 균형 실무 예제 및 성능 비교 (BenchmarkDotNet)1️⃣ 왜 이걸 배워야 하나?✅ C#은 편한 대신 느릴 수 있음하지만 .NET도 진짜 성능 필요한 순간엔 치트키 제공한다! GC 힙 말고 스택 메모리 사용 배열 복사 대신 슬라이스 참조 포인터로 낮은 레벨 직접 접근성능 민감한 작업 (파싱, 문자열 처리, 버퍼 연산)전부 이 챕터에서 다루는 기술이 들어간다!2️⃣ Span –..

C# 2025.05.04

C# 기초부터 고급까지 Chapter 2.10. 프로젝트 구조 패턴 – Layered vs Clean Architecture 소개

📘 Chapter 2.10: 프로젝트 구조 패턴 – Layered vs Clean Architecture 소개✅ 이 챕터에서 배울 것 왜 프로젝트 구조가 중요한가? Layered Architecture란? Clean Architecture란? 두 구조의 코드 예제 비교 (C# 콘솔앱 기준, 레이어 주석 포함) 언제 어떤 구조를 써야 하는가?1️⃣ 왜 프로젝트 구조가 중요한가?✅ 설계가 잘 안 되어 있으면… 클래스가 이리저리 흩어져 유지보수 지옥 기능이 섞이고 결합이 심해 테스트가 어려움 신입이 보면 "뭐가 뭔지 모르겠는데요…"✅ 설계가 잘 돼 있으면… 역할이 딱딱 나뉘고 각 계층 책임이 명확하고 테스트도, 교체도, 확장도 쉬워진다!2️⃣ Layered Architecture✅ 계층별..

C# 2025.05.04

C# 기초부터 고급까지 Chapter 2.9. 인터페이스 활용 – 다형성 실전 예제

📘 Chapter 2.9: 인터페이스 활용 – 다형성 실전 예제✅ 이 챕터에서 배울 것인터페이스란 무엇인가?다형성이 왜 필요한가?구체 클래스 vs 인터페이스 비교실무 시나리오 예제 (MessageSender, Discount 등)전략 패턴과 인터페이스DI와 인터페이스 궁합1️⃣ 인터페이스란?인터페이스란?"기능만 약속하는 설계도" – 실제 구현은 안 담고, 메서드 이름, 파라미터만 정의public interface IAnimal{ void MakeSound();}객체의 기능 규칙만 강제클래스가 여러 인터페이스도 구현 가능상속과 다르게 다중 구현 가능2️⃣ 왜 인터페이스가 필요한가?문제 상황public class EmailSender{ public void Send(string to, strin..

C# 2025.05.03

C# 기초부터 고급까지 Chapter 2.8.1: MSTest 완전정복 – 기본부터 실전 예제까지

📘 Chapter 2.8.1: MSTest 완전정복 – 기본부터 실전 예제까지✅ 이 챕터에서 확실하게 배울 것MSTest란 무엇인가?xUnit과 구조적으로 뭐가 다른가?MSTest 프로젝트 생성 및 설정[TestClass], [TestMethod]의 의미Assert 사용법데이터 기반 테스트 ([DataRow])MSTest에서 Mock 사용하기 (Moq 연동)1️⃣ MSTest란?Microsoft에서 공식 제공하는 단위 테스트 프레임워크✅ Visual Studio 통합성 최강✅ Attribute 기반 구조✅ .NET Framework 시절부터 쭉 사용됨✅ 안정성, 호환성 좋음✅ 실무에서 여전히 많이 씀2️⃣ MSTest vs xUnit 한눈 정리항목MSTestxUnit프로젝트 템플릿mstestxunit테..

C# 2025.05.02