c# 35

Dictionary vs HashSet – 비슷해 보이지만 목적이 다르다

Dictionary vs HashSet – 비슷해 보이지만 목적이 다르다개발하면서 이런 컬렉션들 자주 본다.var dict = new Dictionary();var set = new HashSet();둘 다 뭔가 Add(), Contains() 같은 메서드를 제공하고, 키 기반으로 쓰는 것처럼 보인다.그러다 보면 이런 의문이 생긴다. "둘 다 검색 빠르다며? 그럼 뭐가 다르고 왜 둘 다 있어야 해?"이번 챕터에선 Dictionary와 HashSet의 근본적인 차이와, 실무에서 어떤 상황에 어떤 걸 써야 할지 정확히 구분해보자.문제 상황: 키만 쓰고 싶은데 Dictionary까지 써야 할까?var tags = new Dictionary();tags["csharp"] = true;if (tags.Conta..

C# 2025.06.08

async vs await – 비동기 코딩, 진짜 이해하고 쓰고 있나?

async vs await – 비동기 코딩, 진짜 이해하고 쓰고 있나?처음 C#에서 비동기를 배울 때 이런 코드를 보게 된다.public async Task GetDataAsync(){ await Task.Delay(1000); return 42;}처음 보면 느낌이 좋다.오호~ 뭔가 최신스럽고, 깔끔하고, 빨라 보인다.근데 조금 지나면 이렇게 된다. async void를 남발함 await을 안 쓰고 async만 붙임 Task를 안 기다리고 .Result를 씀 데드락(deadlock)이 발생함 UI가 멈춘다 "async와 await이 뭐가 다른 건데?" "비동기라고 해서 썼는데 더 느린데?"이번 챕터에선 이 둘의 개념부터 실무 팁까지, 진짜로 정리해보자.문제 상황: 비동기로 했는데 ..

C# 2025.06.07

Nullable과 null 처리 전략 – null 때문에 또 터졌다고?

Nullable과 null 처리 전략 – null 때문에 또 터졌다고?null은 개발자의 천적이다.컴파일은 잘 되는데, 런타임에 갑자기 딱! "Object reference not set to an instance of an object."딱 보면 눈물 나는 그 에러…null이 뭔지도 안다고 생각했지만, C#은 여기서 끝이 아니다. null Nullable (int?, bool?) ??, ?., ??= "이걸 도대체 언제, 어떻게 쓰는 거냐" 싶다.이번 챕터에선 null과 Nullable을 실전 위주로 정리해보자.헷갈리는 부분은 예제로, 실무 전략은 표로 정리해준다.문제 상황: 분명 값 있다고 생각했는데, 왜 null이야?class User{ public string Name { get; ..

C# 2025.06.06

object vs dynamic vs var – 언제 뭘 써야 헷갈리지 않을까?

object vs dynamic vs var – 언제 뭘 써야 헷갈리지 않을까?C# 코드 짜다 보면 아래 셋 중에 뭐 써야 할지 헷갈릴 때가 있다.object something = ...;dynamic something = ...;var something = ...;전부 '뭔가를 담을 수 있다'는 느낌인데…똑같은 거 같으면서도 다르고, 다르다면서도 비슷하다. "object는 옛날부터 있던 거고, dynamic은 늦게 생긴 거고, var은 타입 추론 아닌가?"이 정도만 알고 있으면 실무에선 딱 사고 난다.이번 챕터에선 이 셋을 진짜 제대로 구분해보자.헷갈리는 개념, 예외 상황, 실무 기준 사용법까지 싹 정리해줄게.문제 상황: 자동완성도 안 뜨고, 컴파일 에러도 없고?dynamic x = "Hello";C..

C# 2025.06.06

값 타입 vs 참조 타입 – 구조체와 클래스, 뭐가 다른데?

value type vs reference type – 구조체랑 클래스, 뭐가 다른데?개발하다 보면 어느 순간 마주친다. "이거 struct로 만들까? class로 할까?"나도 그랬다.처음엔 뭐든 다 class로 만들었다.왜냐? struct는 잘 모르겠고, 그냥 new만 치면 class가 자동으로 뜨니까…근데 프로젝트가 커지고 퍼포먼스를 고민하기 시작하면, 진지하게 이 차이를 알아야 할 때가 온다.오늘은 이 차이를 눈에 쏙 들어오게 정리해보자.문제 상황: "분명 바꿨는데 값이 왜 안 바뀌지?"struct PointStruct{ public int X; public int Y;}class PointClass{ public int X; public int Y;}var ps1 = new..

C# 2025.06.05

ref, out, in - C# 파라미터 키워드 제대로 구분하자

ref, out, in - C# 파라미터 키워드 제대로 구분하자개발하다 보면 한 번쯤은 이런 코드를 마주친다.public void DoSomething(ref int value) { ... }public void DoSomething(out int result) { ... }public void DoSomething(in int input) { ... }처음 보면 다 비슷하게 생겼다. '결국 값을 전달하는 건데 ref, out, in 이게 도대체 뭐가 다른 건데?' 라는 생각이 들 수밖에 없다.심지어 StackOverflow나 구글에서 검색해도 다들 "ref는 이렇고 out은 저렇고..." 이론적인 설명만 한가득이다. 그런데 그걸 그대로 복붙하듯 외워봤자 실무에선 잘 써지지 않는다.이번 글에선 실제 ..

C# 2025.06.04

C# 기초부터 고급까지 Chapter 3.10. .NET Core로 REST API 설계 – 보안, 인증 포함

📘 Chapter 3.10: .NET Core로 REST API 설계 – 보안, 인증 포함✅ 이 챕터에서 배울 것 REST API 기본 설계 원칙 API 계층 구성 (Controller → Service → Domain) 인증(Authentication)과 인가(Authorization) JWT 기반 인증 실전 예제 미들웨어 구성 및 정책 적용 실무에서 쓰는 보안 팁1️⃣ REST API란?"HTTP를 활용해 리소스를 표현하고, 행동을 명확히 구분하는 방식"✅ 핵심 원칙 원칙예시 리소스 중심/users, /products HTTP 메서드 사용GET, POST, PUT, DELETE 상태 없는 통신요청마다 인증 포함 표준 응답 구조200, 400, 401,..

C# 2025.05.14

C# 기초부터 고급까지 Chapter 3.9. CQRS + MediatR 패턴 실전 예제

📘 Chapter 3.9: CQRS + MediatR 패턴 실전 예제✅ 이 챕터에서 배울 것 CQRS란 무엇인가? 왜 필요한가? Command vs Query 구조 분리 MediatR이란? 왜 쓰는가? 실무 예제: 사용자 등록 + 사용자 조회 구조 설계 (핸들러, 요청 객체, 응답 객체) 테스트와 확장에 유리한 구조1️⃣ CQRS란?Command Query Responsibility Segregation→ 명령과 조회를 책임에 따라 분리하자! 구분설명 Command데이터를 변경하는 요청 (등록, 수정, 삭제) Query데이터를 읽기 위한 요청 (검색, 조회) ✅ 서로 다른 목적이므로 모델, 핸들러, 구조 분리하는 게 유리함2️⃣ MediatR이란?요청(Reques..

C# 2025.05.13

C# 기초부터 고급까지 Chapter 3.8. Domain-Driven Design(DDD) 도입과 구조 설계

📘 Chapter 3.8: Domain-Driven Design(DDD) 도입과 구조 설계✅ 이 챕터에서 배울 것 DDD란 무엇인가? 왜 쓰는가? 도메인, 유비쿼터스 언어, 애그리거트, 엔티티, 밸류오브젝트 계층별 구성 (Domain, Application, Infra, API) 실무 프로젝트 예제 구조 레이어 간 의존 방향 실무에서 마주치는 DDD 오해와 해결 전략1️⃣ DDD란?"복잡한 비즈니스 도메인을 객체 모델로 설계하는 방법론"마틴 파울러의 말:💬 "도메인 전문가와 개발자가 공통 언어(Ubiquitous Language)를 기반으로 소프트웨어를 만든다."✅ 왜 쓰는가? 문제 상황DDD 도입 효과 요구사항 변경 잦음유연한 구조로 적응 가능 기술 중심 설계비..

C# 2025.05.12

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