Зачем приводить к интерфейсу? - PullRequest
35 голосов
/ 06 марта 2009

В Программировании Джесси Либерти на C # (стр. 142) он приводит пример, где он приводит объект к интерфейсу.

 interface IStorable
 {
    ...
 }

 public class Document : IStorable
 {
    ...
 }

 ...
 IStorable isDoc = (IStorable) doc;  
 ...

Какой смысл в этом, особенно если класс объекта в любом случае реализует интерфейс?

EDIT1: чтобы уточнить, меня интересует причина приведения (если есть) , , а не причина реализации интерфейсов. Кроме того, эта книга является его первым изданием 2001 года (на основе C # 1, поэтому этот пример может оказаться неуместным для более поздних версий C #).

EDIT2: я добавил некоторый контекст в код

Ответы [ 11 ]

0 голосов
/ 06 марта 2009

Дело в том, что объект (где вы его взяли?) Может не реализовывать интерфейс, и в этом случае выдается исключение, которое можно перехватить и обработать. Конечно, вы можете использовать оператор «is» для проверки и оператор «as» для приведения вместо приведения в стиле C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...