[2021-9-13 학교 수업중 필기 내용]
C#의 Vector3는 사실 클래스가 아닌 구조체 형식이다.
Vector3 pos = new Vector3(1.0f,2.0f,3.0f);에서 new는 사실 동적할당의 용도로 사용된것이 아니다.
C#에서 구조체는 reference type이 아닌 value type이다.
따라서 구조체는 heap공간이 아닌 stack 공간에 저장될 확률이 높다.
왜 C#에서 구조체는 value type인걸까?
value type의 경의 변수가 선언되었을 때, stack 공간에 저장된다.
메모리 관리 측면에서 heap공간은 stack공간에 비해 비용이 굉장히 높다(시간복잡도가 높다).
즉, stack 공간을 활용할수록, 성능 향상이 될 수 있다.
따라서 자주 쓰는 변수의 경우 클래스 대신 구조체로 구현시 성능 향상효과를 얻을 수 있다.
'Unity > C#' 카테고리의 다른 글
[Unity/C#] Update와 FixedUpdate (0) | 2019.06.17 |
---|---|
[Unity/C#] Ray&Raycast (0) | 2019.06.11 |
-C#- Awake/Start/Update (0) | 2019.06.03 |
-C#- 대리자(delegate) (0) | 2019.05.28 |
C# - Vector3 (0) | 2019.04.03 |