C#에서 클래스(Class)와 구조체(Struct)는 데이터와 해당 데이터를 처리하는 메서드를 포함하는 사용자 정의 타입(UDT)입니다. 그러나 클래스와 구조체는 몇 가지 중요한 차이점이 있습니다. 아래에서 클래스와 구조체의 개념과 주요 차이점을 비교 설명해드리겠습니다:
클래스(Class):
- 클래스는 참조 형식(Reference Type)입니다.
- 클래스는 상속을 지원하며, 단일 상속만 가능합니다.
- 클래스는 힙(heap) 메모리에 인스턴스가 할당됩니다.
- 클래스는 널(null) 값을 가질 수 있으며, 인스턴스는 다른 객체와 공유될 수 있습니다.
- 클래스의 인스턴스는 동적으로 생성하고 해제할 수 있습니다.
- 클래스는 생성자(constructor)를 사용하여 초기화될 수 있으며, 소멸자(destructor)를 사용할 수 있습니다.
- 클래스의 인스턴스는 참조에 의해 전달되고, 여러 곳에서 동시에 참조될 수 있습니다.
구조체(Struct):
- 구조체는 값 형식(Value Type)입니다.
- 구조체는 상속을 지원하지 않으며, 인터페이스 구현과 상속을 제외한 기능이 제한적입니다.
- 구조체는 스택(stack) 메모리에 인스턴스가 할당됩니다.
- 구조체는 널(null) 값을 가질 수 없으며, 값 형식이므로 인스턴스는 값 복사를 통해 전달됩니다.
- 구조체는 기본 생성자를 가져야 하며, 생성자에서 필드를 초기화해야 합니다.
- 구조체는 크기가 작고 단순한 데이터를 표현하기 위해 사용됩니다. 값으로 복사되기 때문에 공유되지 않습니다.
- 구조체는 복사 시 값을 복사하므로 변경해도 원본에 영향을 주지 않습니다.
주로 클래스는 복잡한 개체 모델링과 객체 지향 프로그래밍에 사용되며, 구조체는 작은 데이터 구조나 값 타입을 표현하기 위해 사용됩니다. 클래스는 동적인 특성과 참조에 의한 전달을 갖고 있으며, 구조체는 단순한 데이터 구조를 표현하고 값 복사를 통해 전달됩니다. 선택은 사용 사례에 따라 이루어지며, 프로그램의 요구 사항과 성능 등을 고려해야 합니다.
'Programming > C# - Window' 카테고리의 다른 글
C#/ 인터페이스(interface) (0) | 2023.06.28 |
---|---|
C#/ 구조체(struct)와 readonly (0) | 2023.06.28 |
C#/ 오버라이딩(overriding) (0) | 2023.06.28 |
C#/ 클래스 상속 (0) | 2023.06.28 |
C#/ 클래스 기본 (0) | 2023.06.28 |