구조체
- 구조체는 사용자 정의 데이터 유형으로 기본적으로 제공되는 변수 유형이 아님
=> 새로운 데이터 유형으로 사용자가 직접 정의하여 사용함 - 클래스의 참조형식과 달리 구조체는 값 형식 참조
먼저 알아야 할 내용
값 형식 참조와 참조 형식의 차이 (Value type reference, Reference type reference)
- 클래스는 Heap 에 인스턴스가 생성 및 할당되고 Stack 에 변수로 주소 값을 설정함 (인스턴스에 대한 참조를 포함)
- 구조체는 Stack 에 할당되고 생성과 복사 모두 각각의 변수에 포함된 인스턴스에게 이루어짐 (인스턴스를 포함)
=> 구조체 변수에 다른 변수를 대입할 경우, 참조 값이 변하는게 아니라 값 형식으로 구조체가 복사됨 - 구조체는 매개변수가 없는 생성자를 만들 수 없음 => null 이 존재하지 않음
- 차이점은 아니지만, 구조체를 매개변수에 참조 형식으로 넘길 수 있음 (ref 키워드 사용)
선언 & 사용 방법
구조체를 정의하기 위해서는 struct 문을 사용
구조체를 사용하는 이유
- 여러 데이터 타입들을 집합된 데이터 형태로 저장하기에 적절함 (int, float 등 => A 라는 구조체 데이터 타입으로 묶음)
- 참조 형식이 아니라 값 타입의 변수 사용을 원하는 경우에도 구조체를 사용하기 적절함
- 일반적인 함수로는 여러 자료형을 리턴할 수 없지만, 구조체는 가능함
- 연관된 데이터 타입들을 한 곳에 집합시켰으니 관리와 처리가 수월함 (헷갈리지 않음)
- 함수에 매개변수로 전달할때도 단위로 묶여서 간단함
마무리
'C#' 카테고리의 다른 글
[C#] 직렬화 (Serialization) (0) | 2021.11.12 |
---|---|
[C#] 얕은 복사와 깊은 복사 (Shallow Copy & Deep Copy) (0) | 2021.10.15 |
댓글