ВУЗ:
Составители:
Рубрика:
102
obj = с as IMyInterface;
Операция as выполняет преобразование к требуемому интерфейсу, если
объект поддерживает этот интерфейс, и присваивает полученное значе-
ние переменной. Если преобразование невозможно, то вместо генерации
исключения (как это происходит при кастинге), данная операция при-
сваивает интерфейсной переменной значение null. Например:
SomeType obj1;
IMyInterface obj2;
// некоторый код для инициализации obj1
obj2 = obj1 as IMyInterface;
if(obj2 != null) {
obj.Method1( ); //переменная имеет верное значение
}
else { // объект obj1 не поддерживает нужный интерфейс
//обработка ошибки
}
6.3.4. Встроенные интерфейсы
Интерфейсы позволяют описывать некоторые желательные свой-
ства и методы, которыми должны обладать разные классы. В библиоте-
ке FCL имеется большое число стандартных интерфейсов. Например,
все классы, допускающие сравнение своих объектов, обычно наследуют
интерфейс IComparable, реализация которого позволяет сравнивать
объекты не только на равенство, но и на "больше" или "меньше".
Имеются много интерфейсов, описанных в библиотеке FCL. Они
используются разными классами библиотеки так же, как и классами,
создаваемыми разработчиками.
Примером такого интерфейса является интерфейс IComparable,
который имеет всего один метод CompareTo(object obj), возвра-
щающий целочисленное значение, положительное, отрицательное или
равное нулю, в зависимости от выполнения отношения "больше",
"меньше" или "равно".
Как правило, в классе вначале определяют метод CompareTo, а
после этого вводят перегруженные операции, чтобы выполнять сравне-
ние объектов привычным образом с использованием знаков операций
отношения. Чтобы ввести отношение порядка на классе Person, рас-
смотренном ранее, нужно сделать этот класс наследником интерфейса
IComparable. Для этого нужно реализовать в этом классе метод ин-
терфейса CompareTo:
public class Person:IComparable
{
public int CompareTo(object obj){
Страницы
- « первая
- ‹ предыдущая
- …
- 100
- 101
- 102
- 103
- 104
- …
- следующая ›
- последняя »
