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

to Top