티스토리 뷰

C#

구조체와 클래스의 차이점

inasie 2009. 6. 26. 03:30

구조체와 클래스의 차이점

흔히들 구조체와 클래스의 차이점을 말해보라 하면

구조체에선 함수를 정의할 수 없고, 클래스에선 정의할 수 있습니다.” 라고 한다.

 

이건 C#에선 틀린 답이다. C#에서는 엄연히 구조체 안에도 함수를 정의할 수 있다.

그럼 어떤 차이가 있는가?

 

구조체는 Value타입이고 Class Reference타입니다.

으잉? 항상 듣는 소리다. ‘ValueReference’

 

차이점은 이거면 충분히 알 수 있다.

 

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. bnew ClassA();에서 생성된 메모리 번지를 가리키고 있기 때문이다. Reference니까

 

그럼

struct StructA

{}

StructA a = new Struct();

StructA b = a;

이건?

다시말하지만 struct Value타입이다 기억해두도록

반응형
댓글