Typy proste i referencyjne w Unity C#

Typy proste [wartościowe] przechowywane są na stosie [stack]

Typ danychPrzykładRozmiar
int-10,  0,  128,  20564 bytes
float-12.5f,  0.01f,  2023.24f4 bytes
booltrue,  false1 byte
byte0, 99, 2551 byte
Vector2 / Vector3 [struct]Vector2 dir = new Vector2(0.2f, 0.4f)2 / 3 x 4 bytes
Color32 [struct]Color32 bgColor = new Color32(255, 0, 0, 255)4 x 1 byte
Enumenum GameState { play, pause, gameover, menu }

Typy referencyjne przechowywane są na stercie [heap], adresy do nich na stosie [stack]

Typ danychPrzykład
Object (GameObject, Transform, Component)GameObject enemyPrefab
Tablice (array)int [] numbers = { 1, 2, 3 }
Lista (List)List <int> numbers = new List <int>();
Słownik (dictionary)Dictionary <keyType, valueType> name = new Dictionary <keyType, valueType>();

String – Typ referencyjny niemutowalny

Obiekt typu string jest wyjątkiem, z jednej strony jest typem referencyjnym, ale z drugiej strony nie da się go nadpisać. Z poziomu kodu, zmienne typu string można nadpisać, ale w chwili nadpisania na stercie[heap] tworzona jest nowa instancja tego obiektu i przypisywany jest nowy adres. Dlatego częsta zmiana wartości tekstowych jest dość kosztowna.

Scroll to Top