공부/C#
[C#]클래스 vs. 구조체
개발의 피
2023. 12. 18. 13:41
한 줄 요약: 오직 값에 대한 저장과 참고를 목적으로 할 때는 구조체를 사용, 특정 연산을 목적으로 할 때는 클래스 사용! (C# 스타터, 288p)
특징 | 클래스 (class) | 구조체 (struct) |
형식 | 참조 형식(힙) | 값 형식(스택) |
인스턴스 제거 | 가비지 콜렉터가 제거 | 스택이 자동 제거 -> 사용 끝나면 즉시 메모리에서 해제 (장점) |
복사 | 얕은 복사 | 깊은 복사 |
인스턴스 생성 | new 연산자, 생성자 필요 | 선언만으로도 생성 |
생성자 | 매개변수 없는 생성자 선언 가능 | 매개변수 없는 생성자 선언 불가능 |
상속 | 가능 | 값 형식이므로 상속 불가능 |
목적 | 실세계의 객체 추상화 | 데이터를 담기 위한 자료구조 (편의상, public 사용) |
* 구조체: 클래스가 아닌 자료형, 변수들을 한데 묶어 캡슐화한 것
(제한: 상속x, virtual 함수와 매개 변수를 가지지 않는 생성자를 가질 수x)
장점 : 인스턴스를 생성할 필요 x
가질 수 있는 것 : 메소드, 프로퍼티, 인덱서...
하지만! 변수 이상의 멤버를 가지는 경우 -> 인스턴스를 생성해서 사용
=> 변수 이상의 멤버를 포함할 경우에는, 일반적으로 클래스로 구현