I’ve been playing around with delegates recently, and came across something that was new to me. Whilst I was familiar with the concept of assigning a delegate; for example:
delegate void delegate1(); private static void UseDelegate() { delegate1 mydelegate; mydelegate = func1; mydelegate(); } static void func1() => Console.WriteLine("func1");
I hadn’t realised that it was possible to create a composed delegate, that is, you can simply do the following:
delegate void myDelegate(); private static void ComposableDelegate() { myDelegate del1 = M1; myDelegate del2 = M2; myDelegate composedDel = del1 + del2; composedDel(); } private static void M1() => Console.WriteLine("M1"); private static void M2() => Console.WriteLine("M2");
You can do the exact same thing with Action or Func delegates; for example:
Action action = () => Console.WriteLine("M1"); Action action2 = () => Console.WriteLine("M2"); Action composedDel = action + action2; composedDel();