Listing 5
using namespace System; delegate void D(int x); void F1(int i) { Console::WriteLine("F1: {0}", i); } void F2(int i) { Console::WriteLine("F2: {0}", i); } int main() { D^ cd1 = gcnew D(&F1); D^ cd2 = gcnew D(&F2); /*1*/ D^ list1 = cd1 + cd2; // F1 + F2 /*2*/ D^ list2 = cd2 + cd1; // F2 + F1 D^ cd3 = nullptr; /*3a*/ cd3 = list2 + list1; // F2 + F1 + F1 + F2 cd3(10); /*3b*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 cd3(20); /*4a*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 /*4b*/ cd3 -= cd1 + cd2; // F2 + F1 cd3(30); /*5a*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 /*5b*/ cd3 -= cd2 + cd2; // F1 + F1 cd3(40); /*6a*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 /*6b*/ cd3 -= cd2 + cd1; // F1 + F2 cd3(50); /*7a*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 /*7b*/ cd3 -= cd1 + cd1; // F1 + F2 + F2 + F1 cd3(60); }