C# 기초다지기 - 구조체
안녕하세요 열코입니다.
이번시간에는 C# 구조체(Struct)에 대해 알아보도록 하겠습니다.
- 구조체란?
구조체는 사용자 정의 데이터 유형(Data Type)으로 int, double 등과 같은 기본적으로 제공되는 변수 유형이 아닌
새로운 유형, 여러가지 유형을 사용하기위해 사용자가 직접 만들어 사용됩니다.
C#에서 구조체는 일반 변수와 같이 값 형식의 데이터 형식입니다. (클래스는 참조형식)
- 구조체 정의하기
구조체를 정의하려면 struct 문을 사용합니다.
struct문은 프로그램에서 두개 이상의 멤버(변수)가 있는 새로운 데이터 형식을 정의합니다.
예를들어, 학생이라는 변수를 만들려고할 때 필요한 멤버들은 이름, 학번, 나이 등이 있습니다.
이를 Student 구조체로 만드는 방법은 다음과 같습니다.
1 2 3 4 5 | struct Student { public string name; public int std_num; public int age; }; | cs |
struct 키워드를 통해 Student라는 이름의 구조체를 정의하고 { } 대괄호 안에 멤버 변수들을 정의합니다.
정의된 구조체를 프로그램에서 사용하는 예제입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | using System; struct Student { public string name; public int std_num; public int age; }; public class MyStructTest { public static void Main(string[] args) { Student std; // 구조체 변수 선언 Student std2; std.name = "세모지"; std.std_num = 20181108; std.age = 26; std2.name = "열코"; std2.std_num = 20181109; std2.age = 27; Console.WriteLine("Student 1 name : {0}", std.name); Console.WriteLine("Student 1 std_num : {0}", std.std_num); Console.WriteLine("Student 1 age : {0}", std.age); Console.WriteLine("Student 2 name : {0}", std2.name); Console.WriteLine("Student 2 std_num : {0}", std2.std_num); Console.WriteLine("Student 2 age : {0}", std2.age); } } | cs |
위와 같이 일반 변수처럼 구조체 변수를 선언한 후 구조체 변수의 멤버 변수에 .(점)을 통해 접근합니다.
- C# 구조체 특징
위에서 Student 라는 간단한 구조체를 사용했습니다.
C#에서의 구조체는 전통적인 C/C++의 구조체와 상당히 다른점이 존재합니다.
C# 구조체에는 다음과 같은 특징들이 존재합니다.
- C# 구조체에 메소드, 필드, 속성등을 가질 수 있습니다.
- C# 구조체에 생성자를 정의할 수 있습니다.
- C# 프로그램에서 new 연산자를 이용하여 struct 객체를 생성할 수 있습니다.
- C# 구조체에 기본(Default) 생성자를 정의할 수 없습니다.
- C# 구조체에 소멸자를 정의할 수 없습니다.
- C# 구조체는 다른 구조체나 클래스의 기본 구조체(상속하기 위한)가 될 수 없습니다.
- C# 구조체 vs 클래스
C#에서 구조체와 클래스는 다음과 같은 차이점이 존재합니다.
- 클래스는 참조유형이며 구조체는 값 유형입니다.
- 구조체는 상속을 지원하지 않습니다.
- 구조체는 기본(디폴트) 생성자를 가질 수 없습니다.
이상 'C# 구조체'에 대해 알아보았습니다.
질문 사항은 모두 커뮤니티에서 받습니다. -> 커뮤니티 바로가기
메인 페이지로 이동하시면 더 많은 자료를 볼 수 있습니다.
'C#' 카테고리의 다른 글
C# 기초다지기 - 상속 (0) | 2018.11.09 |
---|---|
C# 기초다지기 - 클래스 (0) | 2018.11.08 |
C# 기초다지기 - 문자열 (2) | 2018.11.07 |
C# 기초다지기 - 배열 (1) | 2018.11.06 |
C# 기초다지기 - 상수 (0) | 2018.11.06 |
C# 기초다지기 - 캡슐화 (0) | 2018.11.05 |
C# 기초다지기 - 프로그램 구조 (0) | 2018.11.05 |
C# 기초다지기 - 변수 (0) | 2018.11.05 |