C#은 Value Type과 reference Type을 지원합니다. C#에서는 struct를 사용하면 Value Type을
만들고, class 를 사용하면 Reference Type을 만듭니다.
C# .NET의 기본 데이터형들은 struct로 정의되어 있습니다. 즉, int, double, float, bool 등의 기본
데이터 타입은 모두 struct로 정의된 Value Type 입니다. Value Type은 상속될 수 없으며, 주로 상대적
으로 간단한 데이터 값을 저장하는데 사용됩니다.
Reference Type은 class를 정의하여 만들며 상속이 가능하고, 좀 더 복잡한 데이터와 행위들을 정의하
는 곳에 많이 사용됩니다. Value Type의 파라미터 전달은 데이터를 복사(copy)하여 전달하는 반면,
Reference Type은 Heap 상의 객체에 대한 레퍼런스(reference)를 전달하여 이루어 집니다.
구현에 있어 어떤 Type을 선택하는가는 해당 Type의 특성을 고려해서 결정해야 하는 문제입니다.
C# struct는 구조체를 생성하고 Value Type을 정의하기 위해 사용됩니다. 많은 경우 C#에서 클래스를
사용하지만, 경우에 따라 클래스보다 상대적으로 가벼운 오버헤드를 지닌 구조체가 필요할 수 있습
니다. C#의 구조체는 클래스와 같이 메서드, 프로퍼티 등 거의 비슷한 구조를 가지고 있지만, 상속은
할 수 없습니다.
하지만 C# 구조체가 상속(inheritance)은 할 수는 없어도, 클래스와 마찬가지로 인터페이스(interface)