Статическая типизация также позволяет компилятору улучшить оптимизацию и пропустить определенные шаги. Возьмем, к примеру, перегрузку, когда у вас есть несколько методов или операторов с одинаковыми именами, отличающимися только своими аргументами. При использовании динамического языка среда выполнения должна оценивать каждую версию, чтобы определить, какое из них лучше всего подходит. С таким статическим языком конечный код просто указывает на соответствующую перегрузку.
Статическая типизация также помогает в обслуживании и рефакторинге кода. Мой любимый пример - функция переименования многих более сложных IDE. Благодаря статической типизации IDE может с уверенностью найти каждое вхождение идентификатора в вашем коде и оставить нетронутыми идентификаторы с тем же именем.
Я не заметил, было ли это упомянуто или нет, но в C # 4.0 введена динамическая проверка VIA ключевого слова dynamic
. Хотя я уверен, что вы захотите избежать этого, когда в этом нет необходимости.