C# 튜토리얼login
C# 튜토리얼
작가:php.cn  업데이트 시간:2022-04-11 14:06:23

C# 익명 메서드



대리자는 동일한 레이블이 있는 메서드를 참조하는 데 사용된다는 점을 이미 언급했습니다. 즉, 대리자 개체를 사용하여 대리자가 참조할 수 있는 메서드를 호출할 수 있습니다.

익명 메서드는 코드 블록을 위임 매개변수로 전달하는 기술을 제공합니다. 익명 메서드는 이름은 없고 본문만 있는 메서드입니다.

익명 메소드에서는 반환 유형을 지정할 필요가 없으며 메소드 본문 내부의 return 문에서 유추됩니다.

익명 메서드 작성 구문

익명 메서드는 delegate 키워드를 사용하여 대리자 인스턴스를 생성하여 선언됩니다. 예:

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

Code block Console.WriteLine("Anonymous Method: {0}", x);은 익명 메서드의 본문입니다.

대리자는 익명 메서드나 명명된 메서드를 통해, 즉 메서드 매개변수를 대리자 개체에 전달하여 호출할 수 있습니다.

예:

nc(10);

다음 예는 익명 메서드의 개념을 보여줍니다.

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)
        {
            // 使用匿名方法创建委托实例
            NumberChanger nc = delegate(int x)
            {
               Console.WriteLine("Anonymous Method: {0}", x);
            };
            
            // 使用匿名方法调用委托
            nc(10);

            // 使用命名方法实例化委托
            nc =  new NumberChanger(AddNum);
            
            // 使用命名方法调用委托
            nc(5);

            // 使用另一个命名方法实例化委托
            nc =  new NumberChanger(MultNum);
            
            // 使用命名方法调用委托
            nc(2);
            Console.ReadKey();
        }
    }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

Anonymous Method: 10
Named Method: 15
Named Method: 30

PHP 중국어 웹사이트