Использование интерфейса IComparer
Интерфейс IComparer определяет метод сортировки, у которого ссыл- ка на объект, реализующий метод сравнения, используется в качестве параметра. В интерфейсе IComparer определен только один метод Com- pare():
int Compare (object obj1, object obj2)
Метод Compare() сравнивает объект obj1 с объектом obj2. Воз- вращаемое значение то же.
// Использование интерфейса Icomparer.
using System;
using System.Collections;
class CompInv : IComparer
{
public int Compare (object obj1, object obj2)
{
return ((Inventory)obj1).name.CompareTo(((Inventory)obj2).name);
}
}
class Inventory
{
public string name;
double cost;
int onhand;
public Inventory(string n, double c, int h)
{
name = n; cost = c; onhand = h;
}
public override string ToString()
{
return String.Format(" {0,-16}Цена: {1,8:C} В наличии: {2}",
name, cost, onhand);
}
}
class MailList
{
public static void Main()
{
ArrayList inv = new ArrayList();
// Добавляем элементы в список.
inv.Add(new Inventory("Плоскогубцы", 5.95, 3));
inv.Add(new Inventory("Гаечные ключи", 8.29, 2));
inv.Add(new Inventory("Молотки", 3.50, 4));
Console.WriteLine("Информация до сортировки:"); foreach (Inventory i in inv)
Console.WriteLine(" " + i); Console.WriteLine();
// Сортируем список, используя интерфейс IComparer. inv.Sort(new CompInv());
Console.WriteLine("Информация после сортировки:"); foreach (Inventory i in inv)
Console.WriteLine(" " + i);
}
}
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.