Эта функция называется «ковариация возвращаемого типа». C # не поддерживает его по следующим причинам:
1) CLR не поддерживает его. Чтобы заставить его работать в C #, нам нужно было бы просто плюнуть на кучу маленьких вспомогательных методов, которые приводят к возвращаемому типу к нужной вещи. Ничто не мешает вам сделать это самостоятельно.
2) Андерс считает, что ковариация возвращаемого типа не является хорошей языковой особенностью.
3) \ У нас много высших приоритетов для языка. У нас только ограниченные бюджеты, и поэтому мы стараемся использовать только лучшие возможности, которые мы можем в любой данной версии. Конечно, это было бы хорошо, но это достаточно легко сделать самостоятельно, если хотите. Лучше, если мы потратим время на добавление функций, которые улучшат опыт разработчиков или добавят больше возможностей для представления языка.