C#의 타입은 두 가지 근본적인 범주로 나뉩니다. 값 타입(데이터를 직접 저장)과 참조 타입(힙에 있는 데이터에 대한 참조/포인터를 저장)입니다. 이 둘은 저장되고 복사되고 비교되는 방식이 다릅니다. 이는 언어 전반의 동작에 영향을 미치는 매우 중요한 구분입니다.
두 가지 범주
값 타입 → struct, int, double, bool, char, enum, DateTime, decimal
인라인으로 저장(지역 변수는 스택); 값에 의해 복사됨.
참조 타입 → class, string, array, object, interface, delegate
변수는 힙에 있는 데이터에 대한 참조를 보유; 참조에 의해 복사됨.
핵심 차이: 복사 의미론
a = ;
b = a;
b = ;
Point { X; }
Point p1 = () { X = };
Point p2 = p1;
p2.X = ;
{ Value; }
Box box1 = () { Value = };
Box box2 = box1;
box2.Value = ;
