값 타입, 참조 타입

김재섭·2022년 12월 6일
0

타입

데이터 타입은 값(Value)타입과 참조(Reference)타입으로 나뉜다.

값 타입

Int, Float, Bool , struct, enum 등이 값 타입이다.
변수가 스택에 값 그대로를 할당한다.
new 없이 선언과 동시에 값을 할당할 수 있다.
값 타입은 복사를 하면 값 그 자체가 복사된다.

int a = 10;
int b = 20;
b = a;

debug.Log($"a : {a}");
debug.Log($"b : {b}");

-------------------------------
Log: 
a : 10
b : 10

참조 타입

Class, String , array 등은 참조 타입이다.
변수가 힙에 값이 있는곳의 위치를 할당한다.
참조타입을 사용하기 위해서는 New를 사용해서 초기화 후, 힙에 할당된 메모리를 스택 공간에서 참조해야한다.
참조타입은 복사를 하더라도 그 값이 복사가 되는게 아니라 그 값이 있는곳의 위치가 복사된다.

예시를 이렇게 드는게 맞는지는 모르겠다.

  a = new classTest();
        a.classInt = 10;
        b = a;
        Debug.Log($"a:{a.classInt} b:{b.classInt}");

        b.classInt = 30;

        Debug.Log($"a:{a.classInt} b:{b.classInt}");

-------------------------------
Log: 
a:10 b:10
a:30 b:30

b.classInt = 30; 부분에서
b의 값을 바꿔준게 아니라, b의 위치에 가서 그 값을 30으로 바꿔준것.
근데 그 위치는 a의 위치니까? a도 30으로 나온다..

profile
Unity C#

0개의 댓글