C#/문법

C# 문법 7 -- 구조체(Struct)

psb08 2024. 11. 27. 11:19
728x90

구조체

 

C#에서 구조체(Struct)는 값 타입 중 하나로, 데이터를 그룹화하는 데 사용됩니다.

구조체는 클래스와 유사하지만 몇 가지 중요한 차이점이 있습니다.

구조체는 값 타입이므로, Stack에 저장되며, 복사할 때 값이 복사됩니다.

반면, 클래스는 참조 타입으로 Heap에 저장됩니다.

 

 

구조체의 특징
1. 값 타입: 구조체는 값 타입으로, 변수에 직접 데이터를 저장합니다.
2. 기본 생성자 없음: 구조체는 기본 생성자를 가질 수 없으며, 모든 필드는 반드시 초기화되어야 합니다.
3. 상속 불가능: 구조체는 다른 구조체나 클래스로부터 상속받을 수 없습니다.
4. 인터페이스 구현 가능: 구조체는 인터페이스를 구현할 수 있습니다.

 

예제 코드 (C#)

struct Point
{
    public int X;
    public int Y;

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }

    public void Display()
    {
        Console.WriteLine($"Point Value : ({X}, {Y})");
    }
}

static void Main(string[] args)
{

	Point point1 = new Point(10, 20);
	Point point2 = point1;

	point1.Display();
	point2.Display();

	point2.X = 30;

	Console.WriteLine("------- 값 변경 후 -------");
	point1.Display();
	point2.Display(); 

}

구조체 정의: Point라는 구조체를 정의하였습니다.

X와 Y라는 두 개의 필드를 가지며, 생성자를 통해 초기화할 수 있습니다.
메서드 추가: Display 메서드를 통해 구조체의 좌표를 출력할 수 있습니다.
구조체 인스턴스 생성: Main 메서드에서 Point 구조체의 인스턴스를 생성합니다.

point1이라는 변수에 (10, 20)의 값을 할당합니다.
값 복사: point2는 point1의 값을 복사합니다. 이때 두 변수는 서로 다른 메모리 공간에 저장됩니다.
값 변경: point2의 X 값을 변경해도 point1의 값은 영향을 받지 않습니다. 이는 구조체가 값 타입이기 때문입니다.

 

 

구조체는 데이터를 그룹화하고 관리하는 데 유용하며, 값 타입으로서 메모리 관리와 성능 측면에서 장점이 있습니다. 그러나 클래스와는 달리 상속을 지원하지 않으므로, 일반적으로 단순한 데이터 구조를 정의할 때 사용됩니다.

 

728x90

'C# > 문법' 카테고리의 다른 글

C# 문법 9 -- 데이터 형식 정리  (0) 2024.11.29
C# 문법 8 -- Nullable  (0) 2024.11.28
C# 문법 6  (0) 2024.11.26
C# 문법 5  (0) 2024.11.25
C# 문법 4  (0) 2024.11.24