32. ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ(delegate)์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

2022. 4. 8. 09:11ยท๐Ÿ’ป Programming Language/C#
  • ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ(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
'๐Ÿ’ป Programming Language/C#' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 34. ์ œ๋„ค๋ฆญ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ(Generic Delegate) & ์ฝœ๋ฐฑํ•จ์ˆ˜
  • 33. ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ(delegate) ์‚ฌ์šฉ
  • 31. ์˜ˆ์™ธํ•„ํ„ฐ(Exception Filter)
  • 30. C# 7.0์—์„œ throw๋ฌธ ํ‘œํ˜„์‹, finally ์ ˆ
S.Honey
S.Honey
  • S.Honey
    Algo ์“ฐ์ž
    S.Honey
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (123)
      • ํšŒ๊ณ  (0)
        • ์ทจ์—… ํ›„ ํšŒ๊ณ  (0)
      • ๐Ÿƒ Frontend Road-Map (2)
        • ๐Ÿšฉ Summary (1)
        • ๐Ÿ“š Road-Map Contents (1)
        • ๐ŸŸง HTML (0)
        • ๐ŸŸฆ CSS (0)
        • ๐ŸŸจ Javascript (0)
        • โฌœ React (0)
        • ๐ŸŸช Redux (0)
      • Backend (0)
        • QueryDSL (0)
      • ๐Ÿ’ป Programming Language (54)
        • C# (51)
        • Flutter-Dart (3)
        • Java (0)
      • ๐Ÿ“š Computer Science (4)
        • Algorithms (4)
        • Database (0)
        • Network (0)
        • Operating System(OS) (0)
      • ๐Ÿ’ฏ CodingTest (60)
        • BaekJoon (22)
        • Programmers (34)
        • CodeTree (4)
      • โœ’๏ธ Design Pattern (1)
      • ๐Ÿฑ Etc (2)
        • Jenkins Plugin ์ œ์ž‘๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

      • ๐Ÿ“– ๊ณต๋ถ€ ์ฐธ๊ณ  ๊ต์žฌ ๋ฐ ์ž๋ฃŒ
    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      BFS
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      ๋ฐฑ์ค€
      DP
      ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
      DART
      programmers
      JavaScript
      ์‚ผ์„ฑsw์—ญํ…Œ
      ์นด์นด์˜ค
      ๋ฌธ์ž์—ด ํŒŒ์‹ฑ
      JS
      BAEKJOON
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      Algorithm
      Java
      ์Šคํ„ฐ๋””
      ์ž๋ฃŒ๊ตฌ์กฐ
      ์ฝ”๋“œํŠธ๋ฆฌ
      ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ๊ตฌํ˜„
      ์‹œ๋ฎฌ๋ ˆ์ด์…˜
      c#
      sort
      ์ด์ง„ํƒ์ƒ‰
      ํŒŒ์ด์ฌ
      Flutter
      ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰
      ์“ฐ์…จ์ž–์•„
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
    S.Honey
    32. ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ(delegate)์˜ ๊ธฐ๋ณธ ๊ฐœ๋…
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

    ๋‹จ์ถ•ํ‚ค

    ๋‚ด ๋ธ”๋กœ๊ทธ

    ๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
    Q
    Q
    ์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
    W
    W

    ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

    ๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
    E
    E
    ๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
    C
    C

    ๋ชจ๋“  ์˜์—ญ

    ์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
    S
    S
    ๋งจ ์œ„๋กœ ์ด๋™
    T
    T
    ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
    H
    H
    ๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
    Shift + /
    โ‡ง + /

    * ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.