Для более полного представления того, что я пыталась описать выше, предлагаю для рассмотрения два примера, где использовалось описание и интерфейсов и делегатов с помощью общих типов.
Задачи составлены аналогично друг другу, отличием является лишь условие поиска в массиве.
А именно:
- 1. Поиск заданного элемента в массиве.
- 2. Поиск максимального элемента в массиве.
Программа 1
using System;
// интерфейс.
public interface IElement.
{.
void newE ();
int summ ();
}.
// класс реализующий интерфейс.
public class MyElement: IElement.
{.
public string name;
public int e1;
public int e2;
// метод для заполнения элементов класса.
public void newE ().
{.
name = Console. ReadLine ();
e1 = Convert. ToInt32 (Console. ReadLine ());
e2 = Convert. ToInt32 (Console. ReadLine ());
}.
// подсчет суммы элементов.
public int summ ().
{.
return (e1 + e2);
}.
}.
// описание делегата.
delegate int Delegate1 (IElement[] arr, int param);
public class Test.
{ // метод для поиска элемента с заданной суммой в массиве (если его нет — возвращает -1).
static int Find (IElement[] arr, int param).
{for (int i = 1; i < 5; i ++).
{if (arr[i]. summ () == param).
{return i;}}.
return -1;}.
public static void Main ().
{Delegate1 d1 = new Delegate1 (Find);
IElement[] array1 = new IElement[5];
array1 [0] = new MyElement ();
array1 [0]. newE ();
array1 [1] = new MyElement ();
array1 [1]. newE ();
array1 [2] = new MyElement ();
array1 [2]. newE ();
array1 [3] = new MyElement ();
array1 [3]. newE ();
array1 [4] = new MyElement ();
array1 [4]. newE ();
int c = d1 (array1,16);
Console. WriteLine («Номер элемента с заданной суммой:»);
Console. WriteLine (c);}.
}.