클래스를 쓰는 이유는 세상 사람들이 다암.
그럼에도 불구하고 클래스 대신 구조체를 쓰는 이유는?
1. 힙 할당을 피하고 성능·메모리 효율 확보
- 클래스(참조형) → 힙에 할당 + 참조를 통해 접근
- GC 대상이 되므로 수명이 끝나면 수거해야 함 (GC 부하 발생 가능)
- 구조체(값형) → 스택이나 포함된 객체 메모리에 바로 저장
- GC 부담 없음, 생성·소멸이 빠름
- 크기가 작을 때는 값 복사 비용보다 힙 할당/GC 비용 절감 효과가 더 큼
2. 독립적인 값 의미를 명확하게 표현
- 값형은 복사 시 원본과 완전히 독립
→ 서로 영향을 주지 않는 데이터임을 타입 설계에서 보장 - 클래스는 참조를 공유하므로, 한쪽 변경이 다른 쪽에 전파되어 의도치 않은 부작용 가능
- “독립적인 값”이라는 요구사항이 있을 때 값형은 의미적으로도 적합
3. 불변 데이터에서 참조 공유의 이점이 적음
- 불변 데이터는 값이 변하지 않으므로 공유할 이유가 없음
- 클래스는 원래 참조 공유를 통해 변경사항을 여러 곳에서 볼 수 있게 하는 게 장점인데,
값이 변하지 않는다면 그 장점이 사라짐 - 이 경우 참조 유지보다 값 자체를 전달하는 값형이 더 직관적이고 안전
'C#' 카테고리의 다른 글
| [C#] 값 형식과 참조 형식의 저장 위치 (1) | 2025.08.10 |
|---|---|
| [C#] 자료구조 정리 표 (2) | 2025.08.10 |
| [C#] Boxing과 UnBoxing (3) | 2025.07.25 |
| [C#] Garbage Collector (2) | 2025.07.25 |
| [C#] LINQ와 Lazy Evaluation(지연 평가) (2) | 2025.07.25 |