본문 바로가기

C#

C# 대리자(Delegate), 무명 메서드, 람다식

반응형

대리자(delegate)

  • 대리자 선언: <접근제한자> delegate <리턴타입> <대리자이름>(파라미터)
  • 대리자는 메서드의 파라미터로 전달 가능
class DelegateTest
{
    // delegate 선언
    public delegate int TestDelegate(int a, int b);

    public DelegateTest()
    {
    	// delegate 인스턴스 생성
        TestDelegate sumD = new TestDelegate(OnSum);
        TestDelegate subD = new TestDelegate(OnSub);
        
        Calc(sumD, subD);
    }

    public int OnSum(int a, int b)
    {
        return a + b;
    }

    public int OnSub(int a, int b)
    {
        return a - b;
    }

    public void Calc(TestDelegate sum, TestDelegate sub)
    {
        Console.WriteLine($"sum: {sum(10, 5)}, sub: {sub(10, 5)}");
    }
}

 

DelegateTest t = new DelegateTest();

 


대리자, 무명 메서드, 람다식

// delegate 인스턴스 생성
TestDelegate sumD = new TestDelegate(OnSum);
TestDelegate sumD = OnSum;

public int OnSum(int a, int b)
{
	return a + b;
}

// 무명 메서드
TestDelegate sumD = new TestDelegate(delegate(int a, int b) { return a + b; });
TestDelegate sumD = delegate(int a, int b) { return a + b; };

// 람다식
TestDelegate sumD = (a, b) => { return a + b; };
TestDelegate sumD = (a, b) => a + b;
반응형