C# 에서 클래스 구조체 차이

LJM·2023년 10월 10일
0

C#

목록 보기
3/4

C#에서 클래스(class)와 구조체(struct)는 두 가지 주요한 사용자 정의 타입으로, 비슷한 방식으로 동작하는 것처럼 보이지만 몇 가지 핵심적인 차이점이 있습니다.

저장 위치:

클래스 (class): 참조 타입이며, 객체는 힙(Heap) 메모리에 할당됩니다. 변수에는 이 객체의 참조(주소)가 저장됩니다.
구조체 (struct): 값 타입이며, 객체는 스택(Stack) 메모리에 할당됩니다. 변수에는 객체의 실제 값이 저장됩니다.
상속:

클래스: 다른 클래스로부터 상속 받을 수 있습니다.
구조체: 다른 구조체나 클래스로부터 상속 받을 수 없습니다. 그러나 인터페이스는 구현할 수 있습니다.
Null 사용:

클래스: 참조 타입이기 때문에 변수의 기본값은 null입니다.
구조체: 값 타입이므로 null을 가질 수 없습니다. 각 필드는 해당 타입의 기본값으로 초기화됩니다.
생성자:

클래스: 매개변수 없는 기본 생성자를 명시적으로 정의하지 않아도 컴파일러에 의해 제공될 수 있습니다.
구조체: 구조체에는 매개변수 없는 기본 생성자를 정의할 수 없습니다. 모든 필드는 초기화되기 전까지 인스턴스를 생성할 수 없습니다.
속성 및 메서드:

둘 다 속성, 메서드, 이벤트, 인덱서 등을 포함할 수 있습니다.
사용 사례:

클래스: 크기가 크거나 생명주기가 긴 객체, 상속이 필요한 객체, 참조를 통한 동작이 필요한 경우에 주로 사용됩니다.
구조체: 작은 데이터 구조, 값 기반의 동작이 필요한 경우, 빈번한 객체 생성과 소멸이 예상되는 상황에서 주로 사용됩니다.

profile
게임개발자 백엔드개발자

0개의 댓글