📝 구조체란?
: 데이터와 관련된 기능을 캡슐화할 수 있는 값(Value) 형식
: struct 키워드를 사용해서 정의
📝 구조체의 특징
- 1. 작은 크기의 데이터에 적합 (16바이트 이하)
- 2. 복사 시 전체 데이터가 복사됨 (깊은 복사)
- - 클래스는 복사 시 참조만 복사됨 (얕은 복사)
- 3. 구조체 내부에 참조 타입의 필드가 있으면 힙 할당 발생
- 4. 함수에 큰 구조체를 전달하면 저하가 될 수도 있다
- - ref 매개변수로 값 타입을 참조타입처럼 넘겨줄 수 있음
📝 구조체와 클래스의 차이
구조체 (struct) | 클래스 (class) | |
형식 | 값 형식 (Value Type) | 참조 형식 (Reference Type) |
메모리 | 스택 영역 | 힙 영역 |
상속 | 불가능 | 가능 |
: 클래스를 인스턴스 화 하면 힙에 할당된다.
힙에 할당된 메모리는 가비지 컬렉터가 사용하지 않는 메모리를 정리해 주는데
클래스를 너무 많이 할당하는 등의 처리야이 많으면 시스템 부하가 올 수 있다.
그래서 굳이 힙에 할당하지 않아도 되는 데이터는 스택 메모리에 할당되는 구조체를 사용하는 것이 성능적으로 좋아 보인다.
📝 구조체와 클래스, 무엇을 선택할까?
https://forum.dotnetdev.kr/t/c-structure/762
C# Structure(구조체)는 언제 사용하면 좋은가요?
안녕하세요. 😄 Structure에 대해 질문 드리고자 합니다. 저는 구조체를 단 한번도 사용해 본 적이 없는데요. 책이나 관련 글을 읽더라도 언제 사용해야 하면 좋을지 제대로 이해하지 못했습니다.
forum.dotnetdev.kr
구조체는 임시 객체에 사용하면 좋을 것 같다는 이야기
ex) for문에서 반복적으로 객체를 생성해야 할 때
'용어정리' 카테고리의 다른 글
[Unity] 코루틴 (0) | 2025.03.10 |
---|---|
[Unity] Monobehavior (0) | 2025.03.07 |
[c#] Action,Func,Delegate 차이점 (0) | 2025.02.28 |
[c#] call by value, call by reference (0) | 2025.02.27 |
[c#]static 정적 변수, 정적 메서드 , 정적 클래스 (0) | 2025.02.24 |