무명형식
무명형식은 선언과 동시에 인스턴스를 할당합니다.
익명 형식을 사용하면 먼저 명시적으로 형식을 정의할 필요 없이 읽기 전용 속성 집합을 단일 개체로 편리하게 캡슐화할 수 있습니다. 형식 이름은 컴파일러에 의해 생성되며 소스 코드 수준에서 사용할 수 없습니다. 각 속성의 형식은 컴파일러에서 유추합니다. new 연산자를 개체 이니셜라이저와 함께 사용하여 무명 형식을 만듭니다.
무명 형식은 object에서 직접 파생되고 object를 제외한 어떠한 형식으로도 캐스팅될 수 없는 class 형식입니다.
그렇기 때문에 enum타입의 무명형식은 불가능하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using System;
public class GameManager : MonoBehaviour
{
void Start()
{
AnonymousType();
}
void AnonymousType()
{
var temp = new { name = "슬깃이", age = 20 };
Debug.Log("이름 : " + temp.name);
Debug.Log("나이 : " + temp.age);
}
}
|
무명 형식은 지역변수에만 선언할수있다. 전역변수에는 선언되지 않는다.
읽기전용 이기때문에 값의 변경이 불가능하다.
무명 메소드
무명메소드를 이해 하기위해서는 delegate를 꼭 알아야합니다.
C# 2.0에 나온 무명 메소드는 메서드를 미리 정의하지 않아도 되는 메서드를 의미한다.
어떤 메서드를 일회용으로 단순한 문장들로 구성되어 있다면, 굳이 별도의 메서드를 정의하지 않아도 되는것이다.
다만 C# 3.0 이상에서는 무명 메서드 대신 람다 식을 사용하여 인라인 코드로 작성하는 방법이 더 선호된다.
무명 메서드에는 람다 식에 없는 기능이 한 가지 있는데 무명 메서드는 매개 변수 목록을 생략할 수 있으며, 이는
무명 메서드가 여러 시그니처를 가진 대리자로 변환될 수 있음을 의미한다.
1
2
3
4
5
6
7
8
9
10
11
12
|
delegate int myDelegate(int value);
public class GameManager : MonoBehaviour
{
myDelegate tempGate;
void Start()
{
tempGate = delegate (int value) { return value + 10; };
Debug.Log(tempGate(10));
}
}
|
위의 예제처럼 메서드의 이름굳이 지정해 주지않고 delegate를 이용하여 실행한다.
'Unity(C#)' 카테고리의 다른 글
Unity(C#) 접근한정자 (0) | 2020.04.24 |
---|---|
Unity(C#) Tuple (0) | 2020.04.24 |
Unity(C#) Event (0) | 2020.04.21 |
Unity(C#) delegate (0) | 2020.04.21 |
Inspector에 변수 재목정하기 (0) | 2020.03.05 |