EX) Add 메서드를 구현한 객체를 받는 함수 구현
interface IAdd
{
int Add(int a, int b);
}
class Foo : public IAdd
{
public override int Add(int a, int b)
{
return a + b;
}
}
public static class Calc
{
public static int Add(int a, int b, IAdd adder)
{
return adder.Add(a, b);
}
}
IAdd, Foo와 같은 새로운 타입을 구현해야 한다.
하지만 델리게이트를 사용하면
public static class Calc
{
public static int Add(int a, int b, Func<int, int, int> adder)
{
return adder(a, b);
}
}
...
Example.Add(10, 20, (int a, int b) => a + b);
개선 1
public static class Calc
{
public static int Add(int a, int b, Func<int, int, int> adder)
=> adder(a, b);
}
...
Example.Add(10, 20, (int a, int b) => a + b);
개선 2
public static class Calc
{
public static T Add<T>(T a, T b, Func<T, T, T> adder)
=> adder(a, b);
}
...
Example.Add(10, 20, (a, b) => a + b);