Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники_АСОИ / Лекции / 02 Массивы и кортежи / Массивы, кортежи, перечисления.docx
Скачиваний:
27
Добавлен:
29.02.2016
Размер:
110.14 Кб
Скачать

If (t1.Equals(t2)) Console.WriteLine("одинаковое содержимое");

Можно также создать специальный интерфейс IEqualityComparer, как показано ниже на примере класса TupleComparer. В этом классе реализованы два метода  Equals() и GetHashCode()  интерфейса IEqualityComparer.

class TupleComparer: IEqualityComparer

{

public new bool Equals(object x, object y)

{

return x.EquaLs(y);

}

public int GetHashCode(object obj)

{

return obj.GetHashCode();

}

}

Реализация метода Equals() интерфейса IEqualityComparer требует мо­дификатора new или неявной реализации интерфейса, потому что базовый класс Object также определяет статический метод Equals() с двумя параметрами.

TupleComparer используется при передаче нового экземпляра методу Equals() класса Tuple<T1,Т2>. Метод Equals() класса Tuple вызывает метод Equals() класса TupleComparer для каждого сравниваемого элемента. Поэтому с классом Tuple<T1, Т2> класс TupleComparer вызывается два раза для проверки эквивалентности всех элементов:

if (t1.Equals(t2, new TupleComparer()))

Console.WriteLine("равны после проверки с помощью TupleComparer");

Итоги

В этом разделе мы познакомились с нотацией C# для создания и использования простых, многомерных и зубчатых массивов. “За кулисами” механизма массивов C# применяется класс Array, и таким образом имеется возможность обращаться к свойствам и методам этого класса через переменные массива.

Было показано, как сортировать элементы массива с использованием интерфейсов IComparable и IComparer.

Вы познакомились с использованием и созданием перечислителей, с интерфейсами IEnumerable и IEnumerator, а также оператором yield. Кроме того, мы получили пред­ставление о кортежах  новом средстве .NET 4.