본문 바로가기

Unity(C#)

Unity(C#)무명형식,무명메소드

무명형식

무명형식은 선언과 동시에 인스턴스를 할당합니다.

 

익명 형식을 사용하면 먼저 명시적으로 형식을 정의할 필요 없이 읽기 전용 속성 집합을 단일 개체로 편리하게 캡슐화할 수 있습니다. 형식 이름은 컴파일러에 의해 생성되며 소스 코드 수준에서 사용할 수 없습니다. 각 속성의 형식은 컴파일러에서 유추합니다. 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