๋ธ๋ฆฌ๊ฒ์ดํธ(Delegate)
:๋ฉ์๋
๋ฅผ๋ค๋ฅธ ๋ฉ์๋
๋ก ์ ๋ฌํ ์ ์๋๋ก ํ๊ธฐ ์ํด์ ๋ง๋ค์ด ์ง ๊ฒ. =>๋ธ๋ฆฌ๊ฒ์ดํธ
๋ฅผ ์ด์ฉํดํฌ์ฅ
ํ๊ณ ์ ๋ฌ.(๋ด๊ฐ ์ดํดํ๋ฐ๋ก๋ .. ใ ใ )
void AAA(int arg1){ ... }
int a = 123;
AAA(a);
class DemoClass
{
int id;
string name;
public int DisplayInfo() {..}
}
void AAA(DemoClass d){ ... }
DemoClass d = new DemoClass();
AAA(d)
- ์์ ์ฝ๋๋ค์ ๊ธฐ์กด ์ธ์๋ฅผ ํตํด ๊ฐ์ฒด ํน์ ๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ์
๋ฉ์๋๋ฅผ ์ ๋ฌํ๊ณ ์ถ์๋ delegate๋ฅผ ์ฌ์ฉ
void AAA(Mydelegate Method){ ... }
int StringToInt(string str) { ... }
delegate int Mydelegate(string str) ;
// ํํ๋ ๋ฉ์๋์ ๊ฐ์ด ์๊ฒผ์ง๋ง ๋ด๋ถ์ ์ผ๋ก๋ ํด๋์ค์ ๊ฐ์ด ๋์ํจ.
MyDelegate myDelegate = new MyDelegate(StringToInt); // delegate ์ธ์คํด์ค ์์ฑ
AAA(myDelegate);
์ ๋ฌํ๋ ค๋ ํจ์์ delegate ์ ๋ฐํํ์
๋ฐ ์ธ์ํ์
, ์ธ์ ์๊ฐ ๊ฐ์์ผ ๋ฉ์๋๋ฅผ ์ ๋ฌํ ์ ์๋ค.
- ์ ๊ทธ๋ฅ ์ง์ ํธ์ถํ์ง ์๊ณ ๋ฒ๊ฑฐ๋กญ๊ฒ ํ ๊น?(๊ฐ์์์ ๋์ง ์๋ฌธ)
์ฌ์ฉ ์์ ์ฝ๋
using System.Collections;
namespace DelegateEx
{
class Program
{
//๋ธ๋ฆฌ๊ฒ์ดํธ ์ ์
delegate int MyDelegate(string str);
// ๋ฐํํ์
์ด int์ด๊ณ ํ๊ฐ์ string์ธ์๋ฅผ ๊ฐ์ง๋ ํฌ๋งท์ ๋ฉ์๋๋ delegate๋ฅผ ํตํด ์ ๋ฌ๋ ์ ์๋ค.
void TestMethod()
{
//๋ธ๋ฆฌ๊ฒ์ดํธ ๊ฐ์ฒด ์์ฑ
MyDelegate md = new MyDelegate(StringToInt);
//๋ธ๋ฆฌ๊ฒ์ดํธ๋ ๋ฉ์๋๋ฅผ ๋ค๋ฅธ ๋ฉ์๋๋ก ์ ๋ฌ. => ์ด ๋ถ๋ถ์ ๋ฉ์๋๋ฅผ ํฌ์ฅํ๋ ๋๋.
AAA(md);//์ฌ๊ธฐ์ ๋ฉ์๋๋ฅผ ์ ๋ฌ.
}
// ๋ธ๋ฆฌ๊ฒ์ดํธ์ ๋์์ด ๋๋ ๋ฉ์๋
// ๋ธ๋ฆฌ๊ฒ์ดํธ ์ ์์ ๋ฐํํ int, ์ธ์ ํ์
= string, ์ธ์์ = 1๊ฐ ๋ชจ๋ ๋์ผํ ๋ฉ์๋.
int StringToInt(string str)
{
return int.Parse(str);
}
// ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ ๋ฌ ๋ฐ๋ ๋ฉ์๋
void AAA(MyDelegate method)
{
int i = method("100");
Console.WriteLine(i);
}
static void Main(string[] args)
{
new Program().TestMethod();
}
}
}
Output
100
'๐ป Programming Language > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
34. ์ ๋ค๋ฆญ ๋ธ๋ฆฌ๊ฒ์ดํธ(Generic Delegate) & ์ฝ๋ฐฑํจ์ (0) | 2022.04.08 |
---|---|
33. ๋ธ๋ฆฌ๊ฒ์ดํธ(delegate) ์ฌ์ฉ (0) | 2022.04.08 |
31. ์์ธํํฐ(Exception Filter) (0) | 2022.04.08 |
30. C# 7.0์์ throw๋ฌธ ํํ์, finally ์ (0) | 2022.04.07 |
29. System.Exceptionํด๋์ค, throw๋ฌธ (0) | 2022.04.07 |