Anonymous Methods

¹«¸í ¸Þ¼Òµå(Anonymous Methods)¿¡ ´ëÇؼ­ ¾Ë¾Æº¸ÀÚ.

1. ¹«¸í Çü½Ä (Anonymous Type)


C#¿¡´Â À̸§ÀÌ ¾ø´Â Çü½Ä(ŸÀÔ)ÀÌ Á¸ÀçÇϴµ¥, À̸¦ ¹«¸íÇü½Ä(Anonymous Type)À̶ó ÇÑ´Ù.
Àӽà º¯¼ö°¡ ÇÊ¿äÇÒ¶§ »ç¿ëµÈ´Ù. »ç¿ë ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.

            var temp = new { age = 20, name = "simpson" };
            Console.WriteLine("age={0}, name={1}", temp.age, temp.name);

¹«¸íÇü½ÄÀº ¼±¾ð°ú µ¿½Ã¿¡ new Å°¿öµå·Î ÀνºÅϽº¸¦ »ý¼ºÇØ¾ß ÇÑ´Ù.
»ý¼ºµÈ ÀνºÅϽº´Â Àбâ Àü¿ëÀÌ´Ù.

2. ¹«¸í ¸Þ¼Òµå (Anonymous Method)


À̸§ÀÌ ¾ø´Â ¸Þ¼­µå·Î delegate¿Í ÇÔ²² »ç¿ëÇÒ¼ö ÀÖ´Ù.
»ç¿ë ¿¹´Â ´ÙÀ½°ú °°´Ù.

button1.Click += delegate(System.Object o, System.EventArgs e)
                   { System.Windows.Forms.MessageBox.Show("Click!");    };


// Create a delegate.
delegate void Del(int x);

// Instantiate the delegate using an anonymous method.
Del d = delegate(int k)
       {
           /* ... */

        };

¹«¸í ¸Þ¼­µå¸¦ »ç¿ëÇϸé ÄÚµù ¿À¹öÇì´õ¸¦ ÁÙÀϼö ÀÖ´Ù.
¹«¸í ¸Þ¼­µåÀÇ ½ÇÁ¦  »ç¿ë ¿¹¸¦ º¸ÀÚ.

Plus, Minus ¸Þ¼­µå¸¦ ¹«¸í ¸Þ¼­µå·Î ÀÛ¼º ÇÏ¿´´Ù.

    delegate int CalcDelegate(int a, int b);
    class Calc
    {
        public void Run(int a, int b, CalcDelegate dele)
        {
            Console.WriteLine(dele(a, b));
        }

        public int Plus(int a, int b) { return a + b;  }
        public int Minus(int a, int b) { return a - b; }

        public void Test()
        {
            //Run(10, 20, Plus);
            Run(10, 20,
                  delegate(int a, int b)
                  {
                     return (a + b);
                  });

            //Run(10, 20, Minus);
            Run(10, 20,
                   delegate(int a, int b)
                   {
                      return (a - b);
                   });
        }
    }



ÂüÁ¶)
https://msdn.microsoft.com/ko-kr/library/0yw3tz5k.aspx