본문 바로가기

C# 개인 공부 기록용/어소트락 게임아카데미 - C# 무료강의[2019] 총48강

[C# 강의 17화] struct & enum

출처 : https://www.youtube.com/watch?v=_YWqlODLugI&list=PL4SIC1d_ab-Y-bBKojxhtFWwNpawMM1h5&index=17

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 컨트롤 시프트 u : 대문자로 변경하는 단축키
struct StructData
{
    // 클래스와 비슷한데 안되는 것이 있다.
    // 리터럴 초기화가 안된다 int a = 0;
    // = 100 안된다.
    // = 0이 기본이다.
    public int a;
    public int b;

    public void Func()
    {
        a = 100;
        b = 100;
    }
}

namespace _21Struct
{
    class Program
    {
        static void Test(StructData _Data)
        {
            _Data.a = 1000;
        }

        static void TestNumber(int _Number)
        {
            _Number = 1000;
        }

        static void Main(string[] args)
        {
            int Number = 100;

            StructData NewData = new StructData();
            // 이게 될텐데? 왜 안되지?
            // 안되면 아 정말... 이런 것도 안되게 하고.
            // 무언가를 만들어 내서 판매
            NewData.a = 10;
            NewData.b = 10;

            // 참조형과 갑형이 있다.
            // 클래스를 객체화하면 그건 참조형

            Test(NewData);

            int TestNewNumber = 100;

            TestNumber(TestNewNumber);
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 기본 자료형 -> 이미 있다.

//
// 사용자 정의 자료형중 하나
// class 참조형 사용자 정의
// struct 값형 사용자 정의
// enum 값형 사용자 정의

// 다른 언어에서는 정수형 상수라고 하는데 C#에서는 아니다.
// 보통 어떤 상태를 표현하는 것 중
// 나만의 것을 가지고 싶을 때 사용한다.
// 열거형이라고 불리며 사용법
// 명찰에 가까운 값
enum ITEMTYPE
{
    EQUIP,
    POTION,
    QUEST,
    NONESELECT
}

// 일일이
class Item
{
    // 아이템 타입
    public ITEMTYPE itemType = ITEMTYPE.NONESELECT;

    public void PotionTypeSetting()
    {
        itemType = ITEMTYPE.POTION;
    }
}

namespace _22Enum
{
    class Program
    {
        static void Main(string[] args)
        {
            Item NewItem = new Item();
            NewItem.itemType = ITEMTYPE.POTION;
            NewItem.PotionTypeSetting();

            // 값형이고.
            // int라고 생각해도 된다.
            // 사용 방법 제외하고는 그냥 int라고

            Console.WriteLine(ITEMTYPE.POTION);

            // 값형이면서 사용자 정의 자료형
            ITEMTYPE Type = ITEMTYPE.POTION;

            switch (Type)
            {
                case ITEMTYPE.EQUIP:
                    break;
                case ITEMTYPE.POTION:
                    break;
                case ITEMTYPE.QUEST:
                    break;
                case ITEMTYPE.NONESELECT:
                    break;
                default:
                    break;
            }
        }
    }
}