본문 바로가기
면접 준비

[면접 준비][C#] class와 struct의 차이점

by 스테디코디스트 2023. 7. 20.
반응형

1. struct(구조체)

[C#]

- 값 형식 -> 복사(call by value)

- 스택에 할당 -> GC사용x -> 프로그램 속도 향상에 도움

- 자주 사용하지 않고 인스턴스 크기가 16바이트 미만인 경우에 사용

- protect 선언 불가 , 상속 불가

[C++]

- 기본값이 public

 

 

2. class(클래스)

[C#]

- 참조 형식 -> 주소(call by reference)

- 힙에 할당됨 -> 삭제시 GC사용 -> 프로그램 속도 저하

- 변수나 함수 등이 자주 사용될 경우에는 참조로 접근하는 것이 좋음

- protect 선언 가능, 상속 가능

[C++]

- 기본값이 private


<면접 예시 답안>

C#에서 구조체는 값 형식인 call by value 형태로 값이 복사되어 전달되고, 클래스는 참조 형식인 call by reference 형태로 주소를 참조하여 값을 전달합니다. 그렇기에 구조체는 값이 스택 영역에 저장되어 사용된 후에 사라지기 때문에 자주 사용되지 않는 고유한 값을 정의할 때 주로 사용합니다. 이와 달리 클래스는 인스턴스가 자주 호출되는 경우 스택 오버플로우를 방지하기 위해 사용되고, 힙 영역에 저장되어 사용 후에 GC를 사용해 정리되기 때문에 프로그램의 속도를 저하시킬 우려가 있습니다. 따라서 자주 사용하는 경우가 아니면 클래스 사용을 지양하고 구조체를 사용하는 것이 좋습니다. 또한 구조체는 상속이 불가능하지만 클래스는 상속이 가능하기에 상속을 해야하는 경우에 클래스를 사용합니다.