C#에서 구조체(structure)는 값 형식(value type) 데이터 타입입니다. 구조체를 활용하면 서로 관련된 다양한 데이터 타입의 데이터를 하나의 변수에 담아 관리할 수 있습니다. 예를 들어 책의 제목, 저자, 주제, 고유 번호처럼 하나의 대상에 속한 여러 정보를 묶어서 처리할 때 유용합니다.
구조체 정의하기
구조체를 정의하려면 struct 문을 사용해야 합니다. struct 문은 프로그램에서 사용할 새로운 데이터 타입을 정의하며, 그 안에 여러 개의 멤버를 포함할 수 있습니다.
다음은 구조체를 정의하는 기본적인 방법입니다.
struct Books {
public string title;
public string author;
public string subject;
public int book_id;
};위 코드에서 Books라는 이름의 구조체가 정의되었으며, 문자열 형식의 title, author, subject와 정수 형식의 book_id 네 개의 멤버 변수를 가지고 있습니다.
구조체 사용 예제
다음은 C#에서 구조체를 선언하고 데이터를 할당한 후 출력하는 전체 예제입니다.
예제 코드
using System;
struct Books {
public string title;
public string author;
public string subject;
public int book_id;
};
public class testStructure {
public static void Main(string[] args) {
Books Book1; /* Book 타입의 Book1 선언 */
Books Book2; /* Book 타입의 Book2 선언 */
/* 첫 번째 책 정보 입력 */
Book1.title = "Learn AngularJS";
Book1.author = "David";
Book1.subject = "AngularJS";
Book1.book_id = 345;
/* 두 번째 책 정보 입력 */
Book2.title = "Learn Java in 7 days";
Book2.author = "Jack";
Book2.subject = "Java";
Book2.book_id = 567;
/* Book1 정보 출력 */
Console.WriteLine("Book 1 title : {0}", Book1.title);
Console.WriteLine("Book 1 author : {0}", Book1.author);
Console.WriteLine("Book 1 subject : {0}", Book1.subject);
Console.WriteLine("Book 1 book_id : {0}", Book1.book_id);
/* Book2 정보 출력 */
Console.WriteLine("Book 2 title : {0}", Book2.title);
Console.WriteLine("Book 2 author : {0}", Book2.author);
Console.WriteLine("Book 2 subject : {0}", Book2.subject);
Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);
Console.ReadKey();
}
}실행 결과
Book 1 title : Learn AngularJS Book 1 author : David Book 1 subject : AngularJS Book 1 book_id : 345 Book 2 title : Learn Java in 7 days Book 2 author : Jack Book 2 subject : Java Book 2 book_id : 567
정리
이 예제에서 확인할 수 있듯이, 구조체는 관련된 데이터를 하나의 단위로 묶어 관리할 수 있게 해주는 강력한 도구입니다. 클래스와 비슷해 보이지만 구조체는 값 형식이므로 변수에 할당될 때 데이터가 복사된다는 점이 중요한 차이입니다. 따라서 크기가 작고 간단한 데이터 그룹을 표현할 때 구조체를 사용하는 것이 효율적입니다.