본문 바로가기
etc/고급강좌(Advanced)

[17]C# 익명 함수(C# Anonymous Methods)

by swconsulting swconsulting 2015. 2. 25.

이전 강좌에서 Delegate를 이야기 했습니다. 이 Delegate는 레퍼런스로 모든 메소드를 선언할 수 있다고 이야기 드렸습니다. 이 점을 응용해서 Anonymous Method를 C#에서 사용할 수 가 있습니다. 


Anonymous Method를 쉽게 설명하면 delegate를 이용해ㅓㅅ 이름이 없는 함수를 선언해서 사용하는 것입니다. 간단한 함수등에 이용하면 좋습니다.


delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x)
{
    Console.WriteLine("Anonymous Method: {0}", x);
};


<Sample Code>

using System;

delegate void NumberChanger(int n);
namespace DelegateAppl
{
    class TestDelegate
    {
        static int num = 10;
        public static void AddNum(int p)
        {
            num += p;
            Console.WriteLine("Named Method: {0}", num);
        }

        public static void MultNum(int q)
        {
            num *= q;
            Console.WriteLine("Named Method: {0}", num);
        }
        public static int getNum()
        {
            return num;
        }

        static void Main(string[] args)
        {
            //create delegate instances using anonymous method
            NumberChanger nc = delegate(int x)
            {
               Console.WriteLine("Anonymous Method: {0}", x);
            };
            
            //calling the delegate using the anonymous method 
            nc(10);

            //instantiating the delegate using the named methods 
            nc =  new NumberChanger(AddNum);
            
            //calling the delegate using the named methods 
            nc(5);

            //instantiating the delegate using another named methods 
            nc =  new NumberChanger(MultNum);
            
            //calling the delegate using the named methods 
            nc(2);
            Console.ReadKey();
        }
    }
}
Anonymous Method: 10
Named Method: 15
Named Method: 30


참고 URL : http://www.tutorialspoint.com/csharp/

댓글0