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.