[C#] 구조체 (Struct)PROGRAMMING/03. C#2024. 4. 8. 17:38
Table of Contents
반응형
구조체(Struct) 란?
구조체는 사용자 정의 데이터 유형(Data Type)으로 int, double 등과 같은 기본적으로 제공되는 변수 유형이 아닌 새로운 유형, 여러가지 유형을 사용하기위해 사용자가 직접 만들어 사용하는 것이다.
C#에서 구조체는 일반 변수와 같이 값 형식의 데이터 형식이다.
구조체(Struct) 정의하기
구조체를 정의하려면 struct 문을 사용한다
struct문은 두 개 이상의 멤버가 있는 새로운 데이터 형식을 정의한다.
예를들어, 'Angle'이라는 변수를 만들려고할 때 필요한 멤버들은 degress, minutes, second 가 있다.
이를 Student 구조체로 만드는 방법은 다음과 같다.
1
2
3
4
5
6
|
public struct Angle
{
private int degrees;
private int minutes;
private int seconds;
}
|
cs |
Struct 와 Class 차이점
언뜻 보면 구조체와 클래스는 비슷해 보인다. 하지만 차이점이 있다.
- Class는 상속이 가능하지만, Struct는 상속이 불가능하다.
- Struct는 값 형식(ValueType)이지만 Class는 참조형식(Reference Type)이다.
값 타입의 경우 스텍이라는 메모리 영역에 할당 되고, 참조 타입은 힙에 할당하는 값의 주소를 가지고 있는다.
구조체(Struct)의 특징
- 구조체는 값 형식이고, 값형식은 임시공간을 생성한다.
- 그래서 생성자 초기화 할 때 한번씩 다 접근해서 다 초기화해야한다.
- 기본 생성자를 사용할 수 없다.
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
32
|
using UnityEngine;
public struct Angle
{
private int degrees;
private int minutes;
private int seconds;
// 임시공간에서는 기본생성자를 사용할 수 없다
//public Angle()
//{
//}
public Angle(int a, int b, int c)
{
degrees = a; // 이거 하나만 하면 오류 뜸, 그래서 다 같이 초가화 해줘야 함
minutes = b;
seconds = c;
}
}
public class Test_Struct : MonoBehaviour
{
void Start()
{
Angle ob = new Angle(); // 기본생성자는 우리가 사용 할 수 없지만 내부적으론 할 수 있기에 콜이 가능하다 (경고 뜸)
Angle ob2 = new Angle(10, 20, 30); // 모든 애들을 한 번에 초기화하기에 문제가 없는 코드이다
}
}
|
cs |
출처 및 참고: https://velog.io/@livelyjuseok/posts
반응형
@HYUNJZZANG :: HyunZzang
HyunZzang의 프로그래밍 공간 / 함께 공부해요!!
도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다 :)