C#

Choosing Between Class and Struct

Falto 2024. 12. 24. 01:48
반응형

Choosing Between Class and Struct - Framework Design Guidelines | Microsoft Learn

 

Choosing Between Class and Struct - Framework Design Guidelines

Learn how to decide whether to design a type as a class, or to design a type as a struct. Understand how reference types and value types differ in .NET.

learn.microsoft.com

에 따르면 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의 차이점을 명확히 구별할 수 있다는 가정 하에).

반응형