В отличие от Java, почему С# обрабатывает методы как не виртуальные функции по умолчанию? Вероятнее всего, это скорее проблема производительности, чем другие возможные результаты?
Мне вспоминается прочтение абзаца Андерса Хейлсберга о нескольких преимуществах, которые создает существующая архитектура. Но как насчет побочных эффектов? Действительно ли это хороший компромисс по умолчанию для не виртуальных методов?