본문 바로가기

C#

[C#] 구조체를 쓰는 이유

클래스를 쓰는 이유는 세상 사람들이 다암.

그럼에도 불구하고 클래스 대신 구조체를 쓰는 이유는?

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