Listing 2
using namespace System; ref struct StrCompare { static int CompareExact(String^ s1, String^ s2) { Console::WriteLine("Comparing {0} and {1} " "using CompareExact", s1, s2); // ... return 0; } static int CompareIgnoreCase(String^ s1, String^ s2) { Console::WriteLine("Comparing {0} and {1}" "using CompareIgnoreCase", s1, s2); // ... return 0; } }; delegate int Compare(String^ s1, String^ s2); /*1*/ Compare^ FindComparisonMethod() { // ... } void Sort(Compare^ compare) { int result; /*3*/ result = compare("Hello", "Hello"); /*4*/ result = compare("Hello", "HELLO"); /*5*/ result = compare("Hello", "Hell"); } int main() { /*6*/ Sort(gcnew Compare(&StrCompare::CompareIgnoreCase)); /*7*/ Sort(FindComparisonMethod()); /*8*/ FindComparisonMethod()("Red", "RED"); }