Contents
접기
728x90
1. 구조체(struct)란?
C#에서 struct는 값 타입(Value Type)으로, 여러 개의 변수를 하나로 묶어 표현할 수 있는 사용자 정의 데이터 형식이다.
클래스처럼 필드, 메서드, 생성자 등을 가질 수 있지만, 간단한 데이터 묶음을 만들 때 사용되는 가벼운 구조이다.
구조체의 멤버는 변수, 메서드로 구성될 수 있다.
📝 구조체 예시
struct Point {
public int X;
public int Y;
public Point(int x, int y) {
X = x;
Y = y;
}
public void Print() {
Console.WriteLine($"X: {X}, Y: {Y}");
}
}
🔹구조체를 new로 생성하는 경우
Point p = new Point(10, 20); // 생성자 호출
- 이 경우, 모든 필드가 안전하게 초기화된다.
- new를 사용하더라도 힙이 아닌 스택에 저장되므로, 성능상 큰 부담은 없다.
- 특히 사용자 정의 생성자를 정의해 둔 경우에는 new를 써야 한다.
🔹구조체를 new 없이 사용하는 경우
//new연산자 없이 사용
Point p; // 선언만 함
p.X = 10; // 각 필드를 직접 초기화
p.Y = 20;
- 구조체는 값 타입이기 때문에 new 없이도 선언할 수 있다.
- 이처럼 필드를 직접 모두 초기화하면 사용 가능하다.
- 구조체는 이렇게 변수를 선언하여 사용할 수 있다.
- 구조체의 멤버에 접근할 때는 .연산자를 사용한다.
⚠️ 주의: new 없이 선언만 하고 필드를 초기화하지 않으면 컴파일 오류
Point p;
Console.WriteLine(p.X); // ❌ 오류: 사용 전에 모든 필드를 초기화해야 함
2. 구조체의 특징
- 값 타입으로 동작하며, 변수에 할당할 경우 값 자체가 복사됨
- 스택에 저장되어 생성과 소멸 속도가 빠름
- 클래스와 유사하게 필드, 메서드, 생성자 등을 가질 수 있음
- 기본 생성자(매개변수 없는 생성자)는 직접 정의할 수 없음 (컴파일러가 자동 생성)
- 상속 불가, 단 인터페이스는 구현 가능
📖 정리
✔ struct는 간단한 데이터 묶음을 표현할 때 적합함
✔ 값 타입으로 작동하여 복사 시 독립적인 데이터로 사용됨
✔ 클래스보다 가볍고 빠르게 동작함
✔ 기본 생성자는 따로 정의할 수 없고, 필드는 반드시 초기화 필요
728x90
'C# > 클래스와 구조체' 카테고리의 다른 글
[C#] 상속(Inheritance) (0) | 2025.04.17 |
---|---|
[C#] 프로퍼티 (Property) (0) | 2025.04.17 |
[C#] 객체 (0) | 2025.04.17 |
[C#] 클래스 구조체 차이 (0) | 2025.04.17 |
[C#] 클래스 (0) | 2025.04.17 |