Persons.CompareItems, задающий ссылку на метод CompareName класса Person. Объект будет создаваться динамически в момент запроса. Класс Person полностью определен, и теперь давайте перейдем к определению контейнера, содержащего объекты Person. Начну с определения свойств класса Persons: class Persons { //контейнер объектов Person //делегат public delegate int CompareItems(Person obj1, Person obj2); private int freeItem = 0; const int n = 100; private Person[]persons = new Person[n]; } В классе определен функциональный класс - делегат CompareItems, задающий контракт, которому должны удовлетворять функции сравнения элементов. Контейнер объектов реализован простейшим образом в виде массива объектов. Переменная freeItem - указатель на первый свободный элемент массива. Сам массив является закрытым свойством, и доступ к нему осуществляется благодаря индексатору: //индексатор public Person this[int num] { get { return(persons[num-1]); } set { persons[num-1] = value; } } Добавим классический для контейнеров набор методов - добавление нового элемента, загрузка элементов из базы данных и печать элементов: public void AddPerson(Person pers) { if(freeItem < n) { Person p = new Person(pers); |