상위 목록: 하위 목록: 작성 날짜: 읽는 데 7 분 소요

구조체(Struct)

구조체(Struct)는 클래스(Class)와 비슷한 부분이 많습니다.

클래스와 동일한 구조로 사용할 수 있으며, 비교적 크기가 작으며 간단합니다.

또한, 상속이 필요가 없는 경우에 주로 사용합니다.

프로그래밍을 진행하다보면 같은 양식을 복사해서 사용해야할 경우가 종종 있습니다.

복사(Copy)에는 얕은 복사(Shallow Copy)깊은 복사(Deep Copy)가 있으며 각각 큰 차이를 보입니다.


특징 클래스 구조체
선언 class struct
형식 참조 형식 값 형식
복사 얕은 복사 깊은 복사
인스턴스 생성 new연산자, 생성자 필요 매개 변수가 없는 생성자 선언 불가



얕은 복사(Shallow Copy)

얕은 복사(Shallow Copy)란 복사본의 값을 바꾸엇을 때 원본의 값도 바뀌는 형태입니다.

클래스에서 얕은 복사가 사용됩니다.

쉽게 설명하자면 word 파일을 작성하였을 때, 바로가기 아이콘과 동일합니다.


세부 코드

class test_class
{
    public int first;
    public int second;
}

private void Form1_Load(object sender, EventArgs e)
{
    test_class original = new test_class();

    original.first = 10;
    original.second = 20;

    test_class copy = original;
    copy.first = 30;

    Console.WriteLine("{0}, {1}, {2}, {3}", original.first, original.second, copy.first, copy.second);
}

실제 출력 값 : 30, 20, 30, 20



깊은 복사(Deep Copy)

깊은 복사(Deep Copy)란 복사본의 값을 바꾸어도 원본의 값은 바뀌지 않는 형태입니다.

구조체에서 깊은 복사가 사용됩니다.

쉽게 설명하자면 word 파일을 작성하였을 때, 복사ㆍ붙여넣기와 동일합니다.


세부 코드

struct test_struct
{
    public int first;
    public int second;
}

private void Form1_Load(object sender, EventArgs e)
{
    test_struct original;

    original.first = 10;
    original.second = 20;

    test_struct copy = original;
    copy.first = 30;

    Console.WriteLine("{0}, {1}, {2}, {3}", original.first, original.second, copy.first, copy.second);
}

실제 출력 값 : 10, 20, 30, 20

댓글 남기기