2013년 8월 30일 금요일

델리게이트와 익명 메서드

C#에서 델리게이트는 delegate라는 키워드를 통해 선언되며 리턴 타입과 파라미터도 가질 수 있다. 또한 new 연산자를 통해 인스턴스를 생성하여 사용된다. 델리게이트가 갖는 리턴 타입과 파라미터는 그가 처리하는 메서드에 종속적이다.
대리자는 메서드를 다른 메서드에 인수로 전달하는데 사용된다.

예
// Declare delegate -- defines required signature:
delegate double MathAction(double num);

class DelegateTest
{
    // Regular method that matches signature:
    static double Double(double input)
    {
        return input * 2;
    }

    static void Main()
    {
        // Instantiate delegate with named method:
        MathAction ma = Double;

        // Invoke delegate ma:
        double multByTwo = ma(4.5);
        Console.WriteLine(multByTwo);

        // Instantiate delegate with anonymous method:
        MathAction ma2 = delegate(double input)
        {
            return input * input;
        };

        double square = ma2(5);
        Console.WriteLine(square);

        // Instantiate delegate with lambda expression
        MathAction ma3 = s => s * s * s;
        double cube = ma3(4.375);

        Console.WriteLine(cube);
    }
}


List<int> list = new List<int>();
list.AddRange(new int[] { 100, 200, 300, 400, 500, 600 });
ICollection<int> result = list.FindAll(delegate(int item) { return item > 350; });
foreach (int a in result)
{
    Console.WriteLine(a);
}

댓글 없음:

댓글 쓰기