본문 바로가기

C#

Delegate - Action, Func

using System;

...

public Action onReduceHp; //리턴타입이 없고 매개변수가 없는 형태의 delegate

public void Progress(Action testDel)
{
	Debug.Log("어쩌고");
}

리턴타입이 없고 매개변수가 없는 형태의 delegate는 하도 많이 쓰다보니까... 앞사람이 틀을 아예 만들어놨음

public Action 이름;

이런 식으로 쓰면 됨

 

 

 

리턴 타입은 없지만 매개변수가 있는 경우 ( public delefate void OnDamage(float damage)

 

public Action<float> onDamage;

이런 식으로 적으면 됨. 

 

 

 


 

 

public Func<int> returnInDel;

Func한텐 <int>가 리턴타입. 매개변수가 아님!!

 

public Func<매개변수, 리턴값> 이름;

 

 

 

public void Progress(ReturnInDel<int> del)

public Func<int> returnInDel;

 

 

public delegate int TestDel(float value)

public Func<float , int> testDel;

 

 

 

 


Action은 리턴 타입이 없고 매개변수도 없는 델리게이트를 미리 선언해놓은 것.

public delegate void Action();

 

 

Action<T>는 리턴 타입이 없지만 매개 변수가 존재할 때 사용.

public delegate void Action<T>(T value);

 

 

Func: 리턴 타입이 있는 Delegate

 

 

 

단점

매개변수 명이 기본값으로 고정되어 있어 다른 스크립트에서 연결될 함수를 자동 생성했을 때 어떤 값이 전달되는지 바로 알기 힘듦.

 

해결법

직접 delegate 정의해서 쓰기

 

'C#' 카테고리의 다른 글

람다  (0) 2022.06.20
Event  (0) 2022.06.20
Delegate  (0) 2022.06.17
base.Awake();  (0) 2022.06.16
싱글턴 패턴  (0) 2022.06.15