ВУЗ:
Составители:
Рубрика:
122
Таким образом, при обращении к типу-параметру в обобщении программист
может использовать только методы, унаследованные от класса object
(Equals(), GetType(), ToString() и др.). Это сильно ограничивает
выбор алгоритмов, которые могут использоваться в методах обобщения.
Например, пусть в обобщение Set требуется добавить метод получения
минимального элемента множества. Код данного метода мог бы выглядеть
следующим образом:
// свойство для получения минимального элемента в множестве
public T Min
{
get
{
if (elements.Length == 0)
throw new Exception("Пустое множество");
T min = elements[0];
foreach (T el in elements)
if (el<min) // Ошибка!
min = el;
return min;
}
}
Ошибка при компилировании этого свойства вызвана тем, что для
класса object не определены операции сравнения объектов (в данном
случае, операция "<"). Эту ошибку можно исправить, используя в свойстве
операцию преобразования (к типу интерфейса IComparable, в котором
определен метод сравнения CompareTo()).
// свойство для получения минимального элемента в множестве
public T Min
{
get
{
if (elements.Length == 0)
throw new Exception("Пустое множество");
T min = elements[0];
foreach (T el in elements)
// приведение элемента множества к типу IComparable
// и сравнение его с помощью метода CompareTo()
if (((IComparable)el).CompareTo(min)<0)
min = el;
return min;
}
}
Таким образом, при обращении к типу-параметру в обобщении программист
может использовать только методы, унаследованные от класса object
(Equals(), GetType(), ToString() и др.). Это сильно ограничивает
выбор алгоритмов, которые могут использоваться в методах обобщения.
Например, пусть в обобщение Set требуется добавить метод получения
минимального элемента множества. Код данного метода мог бы выглядеть
следующим образом:
// свойство для получения минимального элемента в множестве
public T Min
{
get
{
if (elements.Length == 0)
throw new Exception("Пустое множество");
T min = elements[0];
foreach (T el in elements)
if (elСтраницы
- « первая
- ‹ предыдущая
- …
- 120
- 121
- 122
- 123
- 124
- …
- следующая ›
- последняя »
