[C#] Delegate, Event (Feat. ๋ฌด๋ช… ํ•จ์ˆ˜, Func, Action)

2024. 5. 31. 16:43ยท๐Ÿ“ Language/โœ C#

1. Delegate(๋Œ€๋ฆฌ์ž)

Delegate๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํƒ€์ž…์ด๋‹ค. ๋Œ€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”์„œ๋“œ๋ฅผ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์ „๋‹ฌํ•˜๊ณ  ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋ฒคํŠธ์™€ ํ•จ๊ป˜ ๋Œ€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ๋“ฑ๋กํ•˜๊ณ  ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋“ฑ๋ก๋œ ๋ชจ๋“  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์ฒ˜๋ฆฌ๋œ๋‹ค. 
  • BeginInvoke, EndInvoke ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๋ฆฌ์ž๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณดํ†ต ๋น„๋™๊ธฐ ์ž‘์—…๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.
// delegate ๋ฐ˜ํ™˜ํ˜• delegate๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ....);
delegate int DelegateName(int value1, string value2);

 

๋Œ€๋ฆฌ์ž๋Š” ๋ณดํ†ต ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋™์‹œ์— ํ˜ธ์ถœํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค. ๋ฉ”์„œ๋“œ๋ฅผ ๋Œ€๋ฆฌ์ž์— ๋“ฑ๋กํ•œ ํ›„ ํ˜ธ์ถœ์ด ํ•„์š”ํ•  ๋•Œ ๋Œ€๋ฆฌ์ž๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋“ฑ๋ก๋œ ๋ฉ”์„œ๋“œ๋“ค์ด ๋ชจ๋‘ ํ˜ธ์ถœ๋˜๊ฒŒ ๋œ๋‹ค.

  • interface ๋‚ด๋ถ€์—์„œ ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค.
public delegate void DelegatePlus(int coin, int point, int exp);

public class Program
{
    static int userCoin = 0;
    static int userPoint = 0;
    static int userExp = 0;

    static void PlusCoin(int coin, int point, int exp)
    {
        userCoin = userCoin + coin;
    }

    static void PlusPoint(int coin, int point, int exp)
    {
        userPoint = userPoint + point;
    }

    static void PlusExp(int coin, int point, int exp)
    {
        userExp = userExp + exp;
    }

    static void Main(string[] args)
    {
        DelegatePlus killMonster = PlusCoin;
        killMonster += PlusPoint;
        killMonster += PlusExp;

        killMonster(100, 30, 40);
    }
}

 

2. Event

Event๋Š” ๋ฐœ์ƒํ•˜๋Š” ํŠน์ • ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ์‹ ํ˜ธ์ด๋ฉฐ ํ•ด๋‹น ๋™์ž‘์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์•Œ๋ฆผ์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฐ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์ผ์ข…์˜ ํ†ต์‹  ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง์„ ํ†ตํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด๋‚˜ ์‚ฌ์šฉ์ž์˜ ๋™์ž‘์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ํŠน์ • ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์—์„œ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ๋‚˜ ๋ชจ๋“ˆ ๊ฐ„์˜ ํ†ต์‹ ์„ ๋‹จ์ˆœํ•˜๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์—์„œ ๋น„๋™๊ธฐ์ ์ธ ์ƒํ™ฉ์—์„œ ์ด๋ฒคํŠธ์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ ๋˜๋Š” ๋™์ž‘์„ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.
// ํ•œ์ •์ž event delegate๋ช… event๋ช…;
public event TenEventHandler TenEvent;

 

 

๋ฐœ์ƒํ•œ ์‚ฌ๊ฑด์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ผ๊ณ  ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋“ฑ๋ก๋œ ๋ชจ๋“  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ํ˜ธ์ถœ๋˜์–ด ํ•ด๋‹น ๋™์ž‘์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • .NET์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ EventHandler๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • interface ๋‚ด๋ถ€์—์„œ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.
using System;

class Program
{
    delegate void EventHandler(string message);

    class Notifier
    {
        public event EventHandler Execute;

        public void Notifiy()
        {
            Execute("Event");
        }
    }

    static void Print(string str)
    {
        Console.WriteLine(str);
    }

    static void Main(string[] args)
    {
        Notifier notifier = new Notifier();
        notifier.Execute += Print;

        // notifier.Execute(""); ๋ถˆ๊ฐ€๋Šฅ!
        notifier.Notifiy();
    }
}

 

์ด๋ฒคํŠธ์˜ ์ด๋ฆ„์€ ๋ช…ํ™•ํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ง€์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋™์ž‘์ด๋‚˜ ์ƒํƒœ๋ฅผ ์ž˜ ํ‘œํ˜„ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋„ค์ด๋ฐํ•ด์•ผ ํ•œ๋‹ค.

 

3. ๋ฌด๋ช… ํ•จ์ˆ˜

์ผ๋ฐ˜์ ์ธ delegate๋Š” ์ด๋ฏธ ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋“ค๊ณผ๋Š” ๋‹ฌ๋ฆฌ, C# 2.0์—์„œ๋ถ€ํ„ฐ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๋ฉ”์„œ๋“œ ๋ช…์ด ์—†๋Š” ๋ฌด๋ช… ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•œ๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ๋ฉ”์„œ๋“œ๊ฐ€ ์ผํšŒ์šฉ์œผ๋กœ ๋‹จ์ˆœํ•œ ๋ฌธ์žฅ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด, ๊ตณ์ด ๋ณ„๋„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

// delegate(ํŒŒ๋ผ๋ฏธํ„ฐ) { ์‹คํ–‰ ๋ฌธ์žฅ };
delegate(int param1) { };
  • ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•ด๋‹น ๋ฉ”์„œ๋“œ ์›ํ˜•(Prototype)์— ๋งž๋Š” ๋™์ผํ•œ ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค.
  • ์™ธ๊ด€์ƒ ์ธ๋ผ์ธ ๋ฉ”์„œ๋“œ(inline method) ํ˜•์‹์„ ๊ฐ€์ง„๋‹ค.

 

// delegate
delegate void MyDelegate(int a);
MyDelegate d = delegate(int p) { Console.Write(p); };
d(100);

// EventHandler
public partial class Form1 : Form
{
   public Form1()
   {
      InitializeComponent();

      // ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ๋ฉ”์„œ๋“œ๋ช… ์ง€์ •
      this.button1.Click += new System.EventHandler(this.button1_Click);

      // ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ๋ฌด๋ช… ๋ฉ”์„œ๋“œ ์ง€์ •
      this.button2.Click += delegate(object s, EventArgs e)
      {
         MessageBox.Show("๋ฒ„ํŠผ2 ํด๋ฆญ");
      };
   }

   private void button1_Click(object sender, EventArgs e)
   {
      MessageBox.Show("๋ฒ„ํŠผ1 ํด๋ฆญ");
   }
}
  • delegate์— ํ• ๋‹นํ•ด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • EventHandler์— ์ถ”๊ฐ€ํ•ด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ธ๋ผ์ธ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

4. Func, Action

๋ฌด๋ช… ํ•จ์ˆ˜๋Š” ์ผํšŒ์„ฑ์œผ๋กœ ์‚ฌ์šฉ๋  ํ•จ์ˆ˜์— ์šฉ์ดํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์ง€๋งŒ, ๋Œ€๋ฆฌ์ž๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ .NET์—๋Š” ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ ๋Œ€๋ฆฌ์ž๊ฐ€ ์กด์žฌํ•˜์—ฌ ๋Œ€๋ฆฌ์ž๋ฅผ ๋”ฐ๋กœ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1) Func

๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ค‘ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ˜ํ™˜ ํ˜•์‹์ด๋‹ค.

 

public delegate TResult Func<out TResult>()
public delegate TResult Func<in T, out TResult>(T arg)
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2)
public delegate TResult Func<in T1, in T2, in T3, out TResult>(T1 arg1, T2 arg2, T3 arg3)

...

public delegate TResult Func<in T1, in T2, ..., in T16, out TResult>(T1 arg1, ..., T16 arg16)

 

  • ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
Func<int> func1 = () => 10;
Console.WriteLine(func1());

// 10
  • ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ
Func<int, int> func2 = (x) => x*2; // ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” int ํ˜•์‹ ํ•˜๋‚˜, ๋ฐ˜ํ™˜ ํ˜•์‹๋„ int
Console.WriteLine(func2(3));

// 6
  • ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 2๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ
Func<int, int, int> func3 = (x, y) => x + y; // int ํ˜•์‹ ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜ 2๊ฐœ, ๋ฐ˜ํ™˜ ํ˜•์‹๋„ int
Console.WriteLine(func3(3, 4));

// 7

 

2) Action

Fun ๋Œ€๋ฆฌ์ž์™€ ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ ๋ฐ˜ํ™˜ ํ˜•์‹์ด ์—†๋‹ค.

 

public delegate void Action<>() 
public delegate void Action<in T>(T arg) 
public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2) 

...

public delegate void Action<in T1, ..., in T16>(T1 arg1, ..., T16 arg16)

 

  • ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
Action act1 = () => Console.WriteLine("Action()"); 
act1();

// Action()
  • ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ
int result = 0; 
Action<int> act2 = (x) => result = x * x; // ๋žŒ๋‹ค์‹ ๋ฐ–์—์„œ ์„ ์–ธํ•œ result์— ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ 
act2(5); 
Console.WriteLine("result : {0}", result);

// result : 25
  • ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 2๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ
Action<double, double> act3 = (x, y) = >
	{
		double pi = x / y;
		Console.WriteLine("Action<T1, T2>({0}, {1}) : {2}", x, y, pi); 
	};
act3(22.0, 7.0);

// Action<T1, T2>(22, 7) : 3.14285714285714

 

์ฐธ๊ณ 

https://woojoolog.tistory.com/13

 

C# delegate ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ ์ด์œ 

1. delegate ๊ฐœ์š” ์ฒ˜์Œ C# delegate๋ฅผ ์ ‘ํ–ˆ์„ ๋•Œ ์™œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์™œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. C#์—๋Š” ๋Œ€๋ฆฌ์ž(delegate)๋ผ๋Š” ๊ฐœ๋…์ด ์กด์žฌํ•ฉ๋‹ˆ

woojoolog.tistory.com

https://learning-e.tistory.com/44

 

c# ๋Œ€๋ฆฌ์ž(Delegate)์™€ ์ด๋ฒคํŠธ(Event) ๊ฐœ๋…์žก๊ธฐ

์˜ค๋Š˜์€ ์ด๋ฒคํŠธ(Event)์™€ ๋Œ€๋ฆฌ์ž(delegate)์— ๋Œ€ํ•ด ๊ธ€์„ ์จ๋ณด๋ ค ํ•œ๋‹ค. C#์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋กœ, ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ๋Œ€๋ฆฌ์ž(Delegates) ๋Œ€๋ฆฌ์ž๋Š” C#์˜ ์ค‘์š”ํ•œ ๊ฐœ

learning-e.tistory.com

https://daekyoulibrary.tistory.com/entry/C-๋”-๊ฐ„ํŽธํ•˜๊ฒŒ-๋ฌด๋ช…-ํ•จ์ˆ˜-๋งŒ๋“ค๊ธฐ-Func-Action?category=1018070 

 

[C#] ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ฌด๋ช… ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ! : Func, Action

์ต๋ช… ๋ฉ”์†Œ๋“œ์™€ ๋ฌด๋ช… ํ•จ์ˆ˜๋Š” ์ผํšŒ์„ฑ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•  ํ•จ์ˆ˜ ์‚ฌ์šฉ์— ์šฉ์ดํ•˜๋ฉฐ, ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์š”์†Œ๋“ค์ด๋‹ค. ํ•˜์ง€๋งŒ, ๋‘˜ ๋‹ค ๋Œ€๋ฆฌ์ž(Delegate)๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ „์— ๋จผ์ € ๋Œ€๋ฆฌ์ž๋ฅผ

daekyoulibrary.tistory.com

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Language/โœ C#' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [C#] abstract, interface, virtual (feat. override, new)
  • [C#] DateTime, TimeSpan, Stopwatch
  • [C#] Math
  • [C#] struct ๋Œ€์‹  class๋ฅผ ์จ์•ผ ํ•  ๋•Œ
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
[C#] Delegate, Event (Feat. ๋ฌด๋ช… ํ•จ์ˆ˜, Func, Action)
์ƒ๋‹จ์œผ๋กœ

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