구조체
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# 기초
'IT > 코딩' 카테고리의 다른 글
C# 프로퍼티 속성, 인덱서 (0) | 2021.12.16 |
---|---|
C# 클래스 상속 (0) | 2021.12.15 |
C# 네임스페이스 Namespace (0) | 2021.12.13 |
C# 컬렉션 리스트, 큐, 스택, 해시테이블, 딕셔너리, arraylist (0) | 2021.12.12 |
C# 배열 선언과 사용법 (0) | 2021.12.11 |