Для того чтобы можно было произвести сортировку, необходимо определить правила сравнения сортируемых объектов. Такие правила реализуются в методе CompareTo интерфейса IComparable. Поэтому, для того, чтобы иметь возможность сортировать массивы, содержащие данные определенного вами типа, необходимо реализовать интерфейс IComparable для этого типа данных.
_gc _interface IComparable
// сборщик мусора - IComparable
{
int CompareTo(Object* obj);
};
Приведем листинг реализации класса Name (Имя), включая и реализацию интерфейса
IComparable:
_gc class Name : public IComparable
{
private: // частный
String *pText;
public:
Name(String *pText) // Имя
{
this->pText = pText;
}
_property String* get_Item()
{
return pText;
}
_property void set_Itern(String* pText)
{
this->pText = pText;
}
int CompareTo(Object *pOb]) // Объект
{
String *pSl = this->pText;
String *pS2 =
(dynamic_cast<Name *>(pObj))->pText;
return String::Compare(pSl, pS2); // сравниваются имена
}
String *ToString()
{
return pText;
}
};
Результатом работы профаммы является упорядоченный по алфавиту список имен:
Bob // Боб
Charlie // Чарли
Dana // Дана
Michael // Майкл
Peter // Питер