[C#] Value type과 Reference type

2022. 5. 4. 02:49유니티, C#

System.ValueType, bool, byte, int, float, char, enum, struct로 정의하는 type들 : Value Type

object, string, System.Array, class로 정의하는 type들 : Reference Type

 

프로그램 구조적으로 Value type의 수정은 값이 복사가 되기 때문에 잘못 수정해도 타격이 크지 않다.

그러나 Reference type의 수정은 이 값을 사용하는 모든 프로그램이 같은 값을 사용하기 때문에 잘못 수정하면 프로그램 전체에 타격을 줄 수 있다. 따라서 Reference type의 수정은 조심히 다뤄야 한다.

 

 

 

+추가

Value type은 Stack 할당이라 메모리에 부하가 적음.

Reference Type은 Heap 할당이라 오버헤드가 크고 가비지컬렉션이 잦음.