구조체(Struct)
구조체 (Struct)는 클래스 (Class)와 비슷한
부분이 많습니다. 클래스와 동일한 구조
로 사용할 수 있습니다.
하지만 구조체는 클래스와 다른점이 있는데, 크기가 작으며 간단
합니다. 또한 상속이 필요가 없는 경우에 사용
합니다.
특징 | 클래스 | 구조체 |
---|---|---|
선언 | class | struct |
형식 | 참조 형식 | 값 형식 |
복사 | 얕은 복사 | 깊은 복사 |
인스턴스 생성 | 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