public static void main()
 {
     Delegates d = new Delegates();
     d.testDelegate();
     d.testDelegateChain();
     d.testLambda();
 }
 private static void InstanceDelegateDemo()
 {
     Console.WriteLine("----- Instance Delegate Demo -----");
     Delegates p = new Delegates();
     Counter(1, 3, new Feedback(p.FeedbackToFile));
     Console.WriteLine();
 }
 private static void ChainDelegateDemo2(Delegates p)
 {
     Console.WriteLine("----- Chain Delegate Demo 2 -----");
     Feedback fb1 = new Feedback(FeedbackToConsole);
     Feedback fb2 = new Feedback(FeedbackToMsgBox);
     Feedback fb3 = new Feedback(p.FeedbackToFile);
     Feedback fbChain = null;
     fbChain += fb1;
     fbChain += fb2;
     fbChain += fb3;
     Counter(1, 2, fbChain);
     Console.WriteLine();
     fbChain -= new Feedback(FeedbackToMsgBox);
     Counter(1, 2, fbChain);
 }
 private static void ChainDelegateDemo1(Delegates p)
 {
     Console.WriteLine("----- Chain Delegate Demo 1 -----");
     Feedback fb1 = new Feedback(FeedbackToConsole);
     Feedback fb2 = new Feedback(FeedbackToMsgBox);
     Feedback fb3 = new Feedback(p.FeedbackToFile);
     Feedback fbChain = null;
     fbChain = (Feedback)Delegate.Combine(fbChain, fb1);
     fbChain = (Feedback)Delegate.Combine(fbChain, fb2);
     fbChain = (Feedback)Delegate.Combine(fbChain, fb3);
     Counter(1, 2, fbChain);
     Console.WriteLine();
     fbChain = (Feedback)Delegate.Remove(fbChain, new Feedback(FeedbackToMsgBox));
     Counter(1, 2, fbChain);
 }