return(true);} temp= temp.next; } return (false); } Искомые элементы разыскиваются во всем списке. Если элемент найден, то курсор устанавливается на найденном элементе и метод возвращает значение true. Если элемента с заданным ключом нет в списке, то позиция курсора не меняется, а метод возвращает значение false. В процессе поиска для каждого очередного элемента списка вызывается допускаемый ограничением метод CompareTo интерфейса IComparable. При отсутствии ограничений универсальности вызов этого метода или операции эквивалентности приводил бы к ошибке, обнаруживаемой на этапе компиляции. Два метода класса являются запросами, позволяющими извлечь ключ и элемент списка, который отмечен курсором: public K Key() { return (cursor.key); } public T Item() { return(cursor.item); } Давайте рассмотрим теперь тестирующую процедуру - клиента нашего списка, демонстрирующую работу со списками, в которых элементы и ключи имеют разные типы: public void TestConstraint() { OneLinkList<int, string> list1 = new OneLinkList <int, string>(); list1.add(33, "thirty three"); list1.add(22, "twenty two"); if(list1.findstart(33)) Console.WriteLine ("33 - найдено!"); else Console.WriteLine("33 - не найдено!"); if (list1.findstart(22)) Console.WriteLine ("22 - найдено!"); else Console.WriteLine("22 - не найдено!"); if (list1.findstart(44)) Console.WriteLine ("44 - найдено!"); else Console.WriteLine("44 - не найдено!"); Person pers1 = new Person("Савлов", 25, 1500); |