공부/C#

[C#]클래스 vs. 구조체

개발의 피 2023. 12. 18. 13:41

한 줄 요약: 오직 값에 대한 저장과 참고를 목적으로 할 때는 구조체를 사용, 특정 연산을 목적으로 할 때는 클래스 사용! (C# 스타터, 288p)

특징 클래스 (class) 구조체 (struct)
형식 참조 형식(힙) 값 형식(스택)
인스턴스 제거 가비지 콜렉터가 제거  스택이 자동 제거 
-> 사용 끝나면 즉시 메모리에서 해제 (장점)
복사 얕은 복사 깊은 복사
인스턴스 생성 new 연산자, 생성자 필요 선언만으로도 생성
생성자 매개변수 없는 생성자 선언 가능 매개변수 없는 생성자 선언 불가능
상속 가능 값 형식이므로 상속 불가능
목적 실세계의 객체 추상화 데이터를 담기 위한 자료구조 (편의상, public 사용)

 

 

* 구조체: 클래스가 아닌 자료형, 변수들을 한데 묶어 캡슐화한 것

(제한: 상속x, virtual 함수와 매개 변수를 가지지 않는 생성자를 가질 수x) 

장점 : 인스턴스를 생성할 필요 x 

 

가질 수 있는 것 : 메소드, 프로퍼티, 인덱서... 

하지만! 변수 이상의 멤버를 가지는 경우 -> 인스턴스를 생성해서 사용

=> 변수 이상의 멤버를 포함할 경우에는, 일반적으로 클래스로 구현