Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 익명 메서드(Anonymous Method)란? 개념부터 예제까지 한눈에 보기

C#에서 익명 메서드(Anonymous Method)는 이름 없이 코드 블록만으로 구성된 메서드로, 대리자(delegate) 매개변수에 코드 블록을 직접 전달할 때 유용하게 사용됩니다. 별도의 메서드를 정의하지 않고도 간단한 로직을 인라인 형태로 작성할 수 있어 코드가 더욱 간결해집니다.

익명 메서드 선언 방법

익명 메서드는 delegate 키워드를 사용하여 다음과 같이 선언합니다.

delegate void DemoMethod(int n);
...
DemoMethod dm = delegate(int a) {
    Console.WriteLine("Our Anonymous Method: {0}", a);
};

위 코드에서 delegate(int a) { ... } 부분이 바로 익명 메서드이며, 그 본문(body)은 아래와 같습니다.

Console.WriteLine("Our Anonymous Method: {0}", a);

C# 익명 메서드 예제

다음 예제는 익명 메서드와 일반 명명 메서드(named method)를 함께 사용하여 대리자를 호출하는 방법을 보여줍니다. 직접 실행해 보면서 동작 방식을 확인해 보세요.

using System;
delegate void Demo(int n);
namespace MyDelegate {
    class TestDelegate {
        static int num = 10;
        public static void DisplayAdd(int p) {
            num += p;
            Console.WriteLine("Named Method: {0}", num);
        }

        public static void DisplayMult(int q) {
            num *= q;
            Console.WriteLine("Named Method: {0}", num);
        }
        public static int getNum() {
            return num;
        }
        static void Main(string[] args) {
            Demo dm = delegate(int x) {
                Console.WriteLine("Anonymous Method: {0}", x);
            };
            // 익명 메서드를 사용하여 대리자 호출
            dm(15);
            // 명명 메서드로 대리자 인스턴스화
            dm = new Demo(DisplayAdd);
            // 명명 메서드를 사용하여 대리자 호출
            dm(10);
            // 다른 명명 메서드로 대리자 인스턴스화
            dm = new Demo(DisplayMult);
            // 명명 메서드를 사용하여 대리자 호출
            dm(4);
            Console.ReadKey();
        }
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

Anonymous Method: 15
Named Method: 20
Named Method: 80

결과 분석

먼저 익명 메서드가 대리자에 할당되어 dm(15)가 호출되면 "Anonymous Method: 15"가 출력됩니다. 이후 대리자가 DisplayAdd 메서드로 재할당되어 num 값에 10이 더해져 20이 출력되고, 마지막으로 DisplayMult 메서드로 재할당되어 20에 4를 곱한 80이 출력됩니다.

이처럼 익명 메서드를 활용하면 대리자에 연결할 간단한 로직을 별도의 메서드 선언 없이 즉석에서 작성할 수 있어, 특히 짧은 콜백이나 이벤트 처리 코드를 작성할 때 코드의 가독성과 유지보수성이 크게 향상됩니다.