Как отмечает Джастин, нужная вам функция называется «ковариация возвращаемого типа» и не поддерживается в C # или, в этом отношении, в системе типов CLR.
Хотя ее часто запрашивают,крайне маловероятно (*), что эта функция будет реализована в ближайшее время.Поскольку он не поддерживается в CLR, для его реализации нам просто нужно сгенерировать все вспомогательные методы, которые выполняют переадресацию для вас.Поскольку вы уже можете сделать это «вручную» с небольшим количеством кода, компилятор сделает это за вас.(И , как отмечает сегодня другой вопрос, люди иногда смущаются или раздражаются, когда компилятор генерирует метод для перенаправления интерфейса от вашего имени .)
Не поймите меня неправильно;Я вижу, как это удобно, и я использовал эту функцию в C ++.Но каждый раз, когда он появлялся в программе на C #, я обнаруживал, что могу довольно легко обойти его отсутствие.
(*) Конечно, пять лет назад я бы сказал то же самое о именованных и необязательных параметрах, и теперь они в C # 4. Это возможно для маловероятной возможностидолжно быть реализовано, но спрос должен быть чертовски высоким.