반응형
Choosing Between Class and Struct - Framework Design Guidelines | Microsoft Learn
에 따르면 Class와 Struct 중 하나를 고르는 기준은 다음과 같다.
✔️ CONSIDER defining a struct instead of a class if instances of the type are small and commonly short-lived or are commonly embedded in other objects.
❌ AVOID defining a struct unless the type has all of the following characteristics:
- It logically represents a single value, similar to primitive types (int, double, etc.).
- It has an instance size under 16 bytes.
- It is immutable.
- It will not have to be boxed frequently.
작고, 흔히 짧게 살거나 흔히 다른 오브젝트에 임베드될 경우 class 대신 struct를 사용하라.
다음 조건들을 모두 만족시키지 못할 경우 struct를 정의하지 마라.
- 원시 타입(int, double)과 비슷한 논리적으로 하나의 값을 표현함
- 16바이트보다 작음
- 불변
- 자주 box되지 않아야 함 (box가 뭔지에 대해선 Boxing and Unboxing - C# | Microsoft Learn 참고)
결론
long 두 개만 담아도 16바이트 된다. 또한 불변 조건까지 만족해야 되어서 웬만하면 class를 쓰는 게 바람직함을 알 수 있다. 물론 class 대신 struct를 쓰는 게 더 편하다면 저 원칙 같은 건 어겨도 된다(class와 struct의 차이점을 명확히 구별할 수 있다는 가정 하에).
반응형
'C#' 카테고리의 다른 글
Task.Result deadlock solution (0) | 2025.01.02 |
---|---|
C#과 Python: yield return과 yield 비교 (0) | 2024.12.26 |
explicit interface implementation (0) | 2024.12.24 |
.Reverse() 함수를 쓸 때 주의 점 (0) | 2024.12.22 |
public 대신 internal을 사용할 수 있다면 internal을 쓰자. (0) | 2024.12.21 |