Почему C # / CLR не поддерживает переопределение метода co / противоречия?

Есть довольно много вопросов и ответов о взломе вокруг ограничения C #, не позволяющего типам возврата метода (и аргументу) быть замененными на совместимые типы в переопределениях, ноПочему существует ли это ограничение в компиляторе C # или в CLR? Как я вижу, нет ничего, что могло бы сломаться, если бы была допущена ко / противо-дисперсия, так какова причина этого?

Аналогичный вопрос может быть задан для расширения параметров доступа - например, переопределение защищенного внутреннего метода с помощью открытого метода (что поддерживает Java, IIRC)

Ответы на вопрос(4)

Ваш ответ на вопрос