구조체
    public struct Blog
    {
    	public int a;
        
        public void GetA(int value)
        {
        	a = value;
        }
    }

    선언은 struct로 해주면 되고 구조체 안에서는 변수에 값을 넣어줄 수가 없다.

    그릇만 만들어줄 수가 있다.

    클래스와 매우 동일한데 그것이 다르다.

     

    또 하나의 차이는 struct는 상속이 불가능하다.

     

    예전엔 struct를 쓰다가 class라는 게 나왔는데 이전 코드들은 struct로 작성되어 있기 때문에 오류 방지를 위해 여전히 사용되고 있다.

     

    struct를 사용하는 이유

    대신 class 보다 좋은 점은 class는 선언한 뒤 생성을 해줘야 하는데 struct는 선언과 생성이 동시에 이뤄지기 때문이다.

    int 같은 자료형이 struct다.

     

    struct는 값 타입이라 그 안에 값이 저장되어 있는데 class는 주소 타입이라 찾으러 가면 주소가 있고 그 주소를 따라가면 값이 나온다.

     

    생성자

    변수를 생성할 때 하나씩 만들면 번거로운데 그걸 생성자를 통해 쉽게 만들어줄 수 있다.

    // 생성자 만들기
    public struct Blog
    {
    	public Blog(int _a, int _b, int _c)
        {
        	a = _a; b = _b; c = _c;
        }
    }
    
    // 생성자 사용
    Blog b = new Blog(1,2,3);

    파라미터를 원하는만큼 넣어주고 생성할 때 사용하면 된다.

     

     

     

     

     

     

    enum 열거형
    public enum A
    {
    	a,
        b,
        c,
    }

    enum은 선택지를 미리 열거해놓고 그중에서 고르게 만드는 것이다.

     

    델리게이트 delegate

    여러 변수의 값을 똑같은 값으로 한번에 조정하는데 쓸 수 있다.

    public class Test : MonoBehaviour {
    
    	public delegate void ChainFunction(int value);
        ChainFunction chain;
        
        int a;
        int b;
        
        public void SetA(int value)
        {
        	a += value;
        }
        
        public void SetB(int value)
        {
        	b += value;
        }
    }
    
    // 델리게이트가 없을 때 밸류 넣으려면 이렇게 다 따로 함수를 실행해줘야 한다.
    SetA(5);
    SetB(5);
    
    // 델리게이트가 있다면 한번에 할 수 있다.
    chain += SetA;
    chain += SetB;
    
    // 이렇게 함수를 chain에다가 넣어놓고 한번에 올릴 수 있다.
    chain(5);
    
    // 빼는 것도 가능하다.
    chain -= SetB;

    델리게이트를 만들고 그 안에 함수들을 넣었다 뺐다 하면서 관리하는 것이다.

     

    이벤트 event

    델리게이트는 클래스 안에서 함수들을 공통으로 관리할 수 있는데 이벤트는 다른 클래스의 함수까지 모두 함께 관리할 수 있다.

     

    이벤트를 만들기 위해서는 델리게이트를 받아서 사용해야 한다.

    public class Test : MonoBehaviour {
    
    	public delegate void ChainFunction(int value);
        public static event ChainFunction Onstart;
        
        int a;
        int b;
        
        public void SetA(int value)
        {
        	a += value;
        }
        
        public void SetB(int value)
        {
        	b += value;
        }
    }
    
    // 델리게이트처럼 함수를 같은 방법으로 넣고 뺄 수 있다.
    Onstart += SetA;

     

     

    ※ 함께 읽으면 좋은 C# 기초

     

    C# 컬렉션 리스트, 큐, 스택, 해시테이블, 딕셔너리, arraylist 클릭!

    C# 배열 선언, 사용법 클릭!

    C# 조건문, 반복문 클릭!

    C# 연산자, ++ 사용법 클릭!

    C# 전역변수, 지역변수, 접근 지정자 클릭!

    C# 함수 정의와 호출 클릭!

    C# 기본 자료형 클릭!

    C# print, 주석, 변수 클릭!