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");
}