์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ -Delegate

2020. 9. 17. 15:12ใ†์ „๊ณต ๊ณผ๋ชฉ/์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ -Delegate

 

 

Delegate๋Š” ์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ฒ˜์Œ๋ณด๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ผ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

 

Delegate

-๋ฉ”์†Œ๋“œ๋ฅผ ๋Œ€์‹ ํ•ด์„œ ํ˜ธ์ถœํ•ด์ฃผ๋Š” ๋ณ€์ˆ˜

 

Delegate์˜ ์“ฐ์ž„์„ ๋ณด๋ฉด์„œ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋œ๋‹ค.

 

 

Delegate ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ์ด๋ ‡๋‹ค.

1) ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ์„ ์–ธ(์‚ฌ์šฉํ•  ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์€ ํƒ€์ž…์œผ๋กœ) //delegate void Delegate();

2) ๋ฉ”์†Œ๋“œ ์„ ์–ธ //public static void Method1()

3) ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๊ฐ์ฒด์ƒ์„ฑ //Delegate d = new Delegate(Method1)

4) ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๊ฐ์ฒด์—ฐ๊ฒฐ // d += new Delegate(Method2)

5) ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํ˜ธ์ถœ // d()

 

 

๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๊ฐ์ฒด๋ฅผ ๋ฌถ์–ด๋„ฃ์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์œ„๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋ฉด Method1์ด ๋จผ์ € ์‹คํ–‰๋˜๊ณ  Method2๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ 1์ด ๋จผ์ € d๋ผ๋Š” ๋ณ€์ˆ˜์— ์ €์žฅ์ด๋˜๊ณ  ๊ทธ ๋’ค์— 2๊ฐ€ +=๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ™๋Š”๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์ ์ด ๋‚˜์ค‘์— ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ๊ฑฐ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.