C#/클래스와 구조체

[C#] 구조체

도도돋치 2025. 4. 17. 15:35
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