본문 바로가기

C#

클래스(Class) 와 Struct(구조체) 의 차이점

 

 

C# 과 Struct 모두 데이터를 정의 하는데 있어서 같은 속성을 지닌다. 하지만 몇가지의 다른 속성이 있다.

 

상속: C# 은 다른 클래스의 프로퍼티나 매서드를 상속 할 수 있는 방면 구조체는 다른 구조체나 클래스로 부터 상속을 사용 할 수 없다.

따라서 Struct는 단일 데이터 속성을 지닌다. 

 

메모리:  클래스는 힙(Heap) 영역에 데이터를 할당하지만 구조체는 스택(Stack)에 할당된다. 

기본 생성자: 클래스에는 항상 기본 생성자가 존재하지만 Struct는 기본 생성자가 있을수도 있고 없을 수 도 있다. 기본생성자가 없는 경우에는 필드에 명시적으로 초기화해야합니다. 

 

시맨틱 복사: 클래스(Class)가 메서드의 매개변수로 전달되거나 변수에 할당되면 객체에 대한 참조만 전달되며, 객체에 대한 수정 사항은 해당 객체에 대한 모든 참조에 반영됩니다. 반면 구조체(Struct)는 값으로 전달되므로 구조체의 복사본이 생성되고 복사본에 대한 수정 사항은 원본 구조체에 영향을 미치지 않습니다.

 

일반적으로 클래스(Class)는 구조체(Struct)보다 더 다재다능하고 유연하며, 더 복잡한 데이터 구조와 객체 지향 설계에 사용됩니다. 반면에 구조체(Struct)는 더 간단하고 가벼우며 간단한 데이터 저장이나 수학적 또는 기하학적 개념을 표현하는 데 자주 사용됩니다.