void ํจ์์()
{
}
class ํด๋์ค
{
ย ย void ๋ฉ์๋์(int ๋งค๊ฐ๋ณ์์)
ย ย {
ย ย }
}
๋ฉ์๋ = ํด๋์ค ํจ์
๋๋ฆฌ์ = ๋ฉ์๋๋ฅผ ๋งค๊ฐ๋ณ์์ ์ง์ด๋ฃ๋ ๊ธฐ๋ฅย
๋๋ฆฌ์ - C# ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ด๋ | Microsoft Learn
public static void Sibal1()
{
ย //...
}
public static void Sibal2()
{
ย //...
}
public delegate void Sibal();
public static void SibalHelper(Sibal sibalMethod)
{
ย ย sibalMethod();
}
static void Start()
{
ย ย // ๋งค๊ฐ๋ณ์๋ก ๋ฃ๊ธฐ
ย ย SibalHelper(Sibal1); // Sibal1() ์คํ๋จ
ย ย SibalHelper(Sibal2); // Sibal2() ์คํ๋จ
}
public static void Sibal1()
{
ย //...
}
public delegate void Sibal();
static void Start()
{
ย ย // ๋์
? ์ผ๋ก ๋ฃ๊ธฐ
ย ย Sibal siVal = Sibal1;
ย ย siVal(); // Sibal1() ์คํ๋จ
}
์ง์ด๋ฃ๊ธฐ๋๊น = ์ฐ์ฐ์๋ ๋จ.
public static void Sibal1()
{
ย //...
}
public static void Sibal2()
{
ย //...
}
public delegate void Sibal();
static void Start()
{
ย ย // ๋๋ฆฌ์ ์ฒด์ธ delegate chain
ย ย Sibal sibalChain;
ย ย Sibal sibalChain += Sibal1;
ย ย Sibal sibalChain += Sibal2;
ย ย sibalChain(); // Sibal1, Sibal2 ๋ ๋ค ์คํ๋จ
}
๋์์ ์ฌ๋ฌ ๊ฐ ์คํํ ๋ ํธํจ.
ex) ๋ ๋ฒจ์ ์, ์ฒด๋ ฅ ์ , ๋ง๋ฐฉ ์ ์ํค๋ ํจ์๋ค์ด ์์ ๋,ย
up += AddDefense;
upย += AddHealth;
up(5);ย
ํ๋ฉด AddDefense(5), AddHealth(5) ํ๊ฑฐ๋ ๊ฐ์.
๋๋ค์ย
static void Start()
{
ย ย Sibal sibalChain;
ย ย Sibal sibalChain += Sibal1;
ย ย // ์ด๋ฆ ์๋ ๋ธ๋ฆฌ๊ฒ์ดํธ
ย ย Sibal sibalChain += delegate () { print("sibal"); };
ย ย Sibal sibalChain += Sibal2;
ย ย sibalChain();
}
// public delegate void (); ์ด๋ฐ๋๋
// ํ๋ฒ ๋ฐ์ ์ ์ธ๊ฑด๋ฐ ํจ์๋ก ์ ๊ธฐ ์ซ์๋ ์
// ๊ธฐ์ ์๋ผ๋ ๊น์ ๋ ์ ์ฝํด์ ์ฐ๊ธฐ => ๋๋ค์
Sibal sibalChain += delegate () { print("sibal"); };
Sibal sibalChain += () => print("sibal");
// ๊ฐ์
Action ๋๋ฆฌ์ (System) | Microsoft Learn
Action ๋ณด์ด๋ ๋ฐํ ๋ธ๋ฆฌ๊ฒ์ดํธ,
Func ๋ฐํํ๋๊ฒ ์๋ ๋ธ๋ฆฌ๊ฒ์ดํธ
๊ท์ฐฎ๊ฒ ํ ์ค ๋ ์ฐ์ง๋ง๋ผ๊ณ c#์ด ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋์ ๋๋
public static void Sibal1()
{
ย //...
}
public static void Sibal2()
{
ย //...
}
// public delegate void Action();
// public delegate void Sibal();
// ๊ฐ์
// public static void SibalHelper(Sibal sibalMethod)
public static void SibalHelper(Action sibalMethod)
{
ย ย sibalMethod();
}
static void Start()
{
ย ย // ๋งค๊ฐ๋ณ์๋ก ๋ฃ๊ธฐ
ย ย SibalHelper(Sibal1); // Sibal1() ์คํ๋จ
ย ย SibalHelper(Sibal2); // Sibal2() ์คํ๋จ
}
๊ทธ์น๋ง... ์ ๋ํฐ์ด๋ฒคํธ๋ฅผ ์ฐ๋ฉด ๋ ํธํ๊ฑธ...
์ ๋ํฐ ์ด๋ฒคํธ๋ unirx ๊ฐ์ด ๋ณด์กฐ ํ๋ฌ๊ทธ์ธ ์๋?
unirx๋ ์ ๋ํฐ์ด๋ฒคํธ๋์ ์ฉ๋๊ฐ ๋๋ฌด ๋ค๋ฅธ๋ฏ? ์ ๋ํฐ ์ด๋ฒคํธ๋ delegate๋ ์ด๋ฒคํธ ์ ๋ํฐ ๋ฒ์ ์ด๋๊น... === unirx์์๋ ์ ๋ํฐ์ด๋ฒคํธ ๊ด๋ จ๋ ๋ฉ์๋ ์์๊ฒ๊ฐ์. ์์จ๋ด์ ๋ชจ๋ฅด๊ฒ ๋๋ฐ unitask์๋ ์์.