본문 바로가기
카테고리 없음

[코딩일기] C# 구조체(struct)

by mania2321 2024. 6. 24.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


// <구조체>
// class와 구조체인 struct는 기능이 똑같다. 과거 class가 없을 당시에 struct를 사용했고 언어가 발전함에 따라 class를 사용하기 시작함
// 그럼 왜 struct가 존재하는가? 호환성 때문에 존재.
// struct는 class의 구버전인 만큼, class와 같은 기능을 한다고는 해도 신버전인 class보다 기능이 적다.
// 대표적으로 한 가지를 들자면, struct는 class와 같이 상속이 불가능하다. struct는 monobehavior를 못쓴다.

// struct는 값 타입이고(Value Type), class 주소 타입이다(Reference Type).
// 예를 들어 int a = 10; 이라는 변수에 접근하면, 값 타입은 다이렉트로 10 이라는 값에 접근하고, 주소 타입은 10에 대한 주소를 찾아 10에 접근하는 것. struct가 더 직관적이고 접근이 빠르다고 할 수 있다.

public class Youtube
{
    public int a /* = 1 */ ;       // 구조체에는 변수에 값을 대입할 수 없다. 단순히 그릇 역할만 할 수 있다. 
                                   // 값을 대입하려면, 'public class Youtube'와 같이 public을 대입하거나, 'GetA'와 같이 파라미터를 받아서 대입시켜야 한다.

    public void GetA(int value)
    {
        a = value;
    }
}
public class Test : MonoBehaviour
{
    Youtube LSB = new Youtube();            // Youtube 구조체를 'LSB' 라고 정의. 그러면 LSB는 Youtube가 되는 것.
                                            // struct를 사용하면 'Youtube LSB;' 만 해도 가능하지만, class로 바뀌면 'Youtube LSB = new Youtube();'로 따로 공간을 만들어 줘야됨

    void Start()
    {
        LSB.a = 5;          // 값을 넣는 방법 1
            
        LSB.GetA(5);        // 깂을 넣는 방법 2

        print(LSB.a);
    }

}

댓글