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