📝 구조체란?                                                                                                       

: 데이터와 관련된 기능을 캡슐화할 수 있는 값(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

+ Recent posts