C# 구조체란 무엇인가?
C#에서 구조체(structure)는 값 형식(value type) 데이터 타입입니다. 구조체를 활용하면 하나의 변수 안에 서로 다른 데이터 타입을 가진 관련 데이터들을 묶어서 저장할 수 있습니다. 구조체를 선언할 때는 struct 키워드를 사용합니다.
C# 구조체의 주요 특징
- 다양한 멤버 포함 가능: 구조체에는 메서드, 필드, 인덱서, 속성(property), 연산자 메서드, 이벤트 등을 포함할 수 있습니다.
- 생성자와 소멸자: 구조체에는 생성자를 정의할 수 있지만, 소멸자(destructor)는 정의할 수 없습니다. 또한 매개변수가 없는 기본 생성자(default constructor)는 직접 정의할 수 없으며, 컴파일러가 자동으로 정의하기 때문에 사용자가 변경할 수 없습니다.
- 상속 불가: 클래스와 달리 구조체는 다른 구조체나 클래스로부터 상속받을 수 없습니다.
- 기반 클래스 역할 불가: 구조체는 다른 구조체나 클래스의 기반(base)으로 사용될 수 없습니다.
- 인터페이스 구현 가능: 구조체는 하나 이상의 인터페이스를 구현할 수 있습니다.
구조체 정의 방법
다음은 struct 키워드를 사용하여 구조체를 정의하는 기본 문법입니다.
struct Student {
public string name;
public int id;
public string subject;
};위 예제는 학생 정보를 담는 Student 구조체입니다. 이름(name)은 string, 학번(id)은 int, 과목(subject)은 string처럼 각 멤버가 서로 다른 데이터 타입으로 정의되어 있음을 확인할 수 있습니다.
구조체 활용 팁
구조체는 클래스보다 가볍기 때문에 좌표(Point), 날짜(DateTime), 색상(Color)처럼 크기가 작고 자주 생성·복제되는 간단한 데이터를 다룰 때 특히 유용합니다. 반면 상속이 필요하거나 객체 참조를 공유해야 하는 경우에는 클래스를 사용하는 것이 적합합니다.