C# 강좌 : 제 17강 - 구조체

   

구조체 (Struct)


구조체 (Struct)는 클래스 (Class)와 비슷한 부분이 많습니다. 클래스와 동일한 구조로 사용할 수 있습니다. 하지만 구조체는 클래스와 다른점이 있는데, 크기가 작으며 간단합니다. 또한 상속이 필요가 없는 경우에 사용합니다.


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


참조 형식, 값 형식이란? : 9강 바로가기


복사 (Copy)


프로그래밍을 진행하다보면 같은 양식을 복사해서 사용해야할 경우가 종종 있습니다. 복사에는 2 종류가 있으며 각각 큰 차이를 보입니다.

  • 얕은 복사 (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) : 깊은 복사란 복사본의 값을 바꾸어도 원본의 값은 바뀌지 않는 형태입니다. 구조체에서 깊은 복사가 사용됩니다. 쉽게 설명하자면 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



도움이 되셨다면 광고 클릭 부탁드립니다.

⤧  Next post C# 강좌 : 제 18강 - 컬렉션 ⤧  Previous post C# 강좌 : 제 16강 - 배열