코딩의 신 40

김동관·2025년 11월 27일

오늘 한 일

  1. C# 문법 복습.

  2. 델리게이트 복습.

  3. 람다 복습.

오늘 내용은 복습 위주로 델리게이트와 람다에 대해서 설명해드리겠습니다.

  1. 델리게이트란?

델리게이트(delegate)는 “메서드(함수) 자체를 변수처럼 저장하고 전달할 수 있게 해주는 기능.


void Start ()
{
	Show1();
    }
    
public delegate void DelegateFun();
public DelegateFun delegateFun;

public void Show1()
{
	delegateFun = TestFun;
    delegateFun.Invoke();
    //delegateFun(); Invoke대신 이렇게도 가능하지만 위에는 델리게이트라는게 확실히 알 수 있기 때문에 위에처럼 하는게 보기 좋을 수 있습니다.    
    }
public void TestFun()
{
	Debug.Log("나는 왕이다");
    }
    // 기본적인 델리게이트의 구조입니다. 매개변수, 반환형이 없는 예시입니다.

public delegate void DelegateFun2(int num, string text);
public DelegateFun2 delegateFun2;

public void Show1()
{
	delegateFun = TestFun2;
	public DelegateFun2(1, "나는 왕이다");
	}
public void TestFun2(int num, string text)
{
	Debug.Log(text + num);
    }
    // 매개변수가 있는 델리게이트의 구조입니다. 간단하게 매개변수만 똑같이 추가를 해주시면 됩니다.
public delegate int RDelegateFun();
public RDelegateFun rdelegateFun;

public void Show1()
{
	rDelegateFun = RTestFun1;
	int resultNum = rDelegateFun();
    Debug.Lod("이것이 왕이다" + resultNum);
	}
public void RTestFun1()
{
	return 1;
    }
    //반환값이 있는 델리게이트 입니다. 반환값이 생긴다고 코드가 크게 변하지는 않았습니다.

public delegate int RDelegateFun2(int num);
public RDelegateFun2 rdelegateFun2;

public void Show1()
{
	rDelegateFun2 = RTestFun2();
    int resultNum = RTestFun2(56);
    Debug.Lod("이것이 왕이다" + resultNum);
	}

public void RTestFun2(int num)
{
	return num;
    }
    //이것은 매개변수와 반환값이 있는 델리게이트 입니다.

여기서 이제 새로운 걸 추가해봅시다.

Action tAction;

public void Show3()
{
	tAction = TestFun;
    iAction();
    }
    public void TestFun()
{
	Debug.Log("나는 왕이다");
    }
    
    //그동안 이걸 쓰셨지만
    public delegate void DelegateFun();
	public DelegateFun delegateFun;
    = Action tAction; 이거 하나로 단축이 가능합니다. 델리게이트를 더 쉽게 쓰는 방법이 생겼네요.
    
public Action<int> tAction2;
//매개 변수가 생긴다면? <int>이것만 추가해주면 끝

만약 근데 리턴값이 생긴다면 여기서는 또 다른것을 사용해주어야 합니다.
리턴값이 있을 때 = Func

pulbic Func<int, string, string> r Fun3;

public void Show4()
{
rFun=RTestFun3;
Debug.Log(rFun(1, "나는 왕이다"));
}
//이런식으로 사용을 해주시면 됩니다.

오늘은 여기까지 입니다.
추워지는 날씨 몸조심 하시길 바랍니다.

profile
아이디어 뱅크

0개의 댓글