티스토리 뷰
구조체와 클래스의 차이점
흔히들 구조체와 클래스의 차이점을 말해보라 하면
“구조체에선 함수를 정의할 수 없고, 클래스에선 정의할 수 있습니다.” 라고 한다.
이건 C#에선 틀린 답이다. C#에서는 엄연히 구조체 안에도 함수를 정의할 수 있다.
그럼 어떤 차이가 있는가?
구조체는 Value타입이고 Class는 Reference타입니다.
으잉? 항상 듣는 소리다. ‘Value와 Reference’
차이점은 이거면 충분히 알 수 있다.
int a = 10;
int b = a;
a = 20;
현재 b의 값은? 당연히 10이다. Value타입이니까
class ClassA
{
public int valTest = 0;
}
ClassA a = new ClassA();
ClassA b = a;
a.valTest = 5;
현재 b.valTest의 값은? 당연히 5다. b는 new ClassA();에서 생성된 메모리 번지를 가리키고 있기 때문이다. Reference니까
그럼
struct StructA
{}
StructA a = new Struct();
StructA b = a;
이건?
다시말하지만 struct는 Value타입이다 기억해두도록
반응형
댓글