Дизайнеры языка решили создать его таким образом.
Я подозреваю (и это только мое мнение), что это произошло из-за того, что ref
и out
должны быть указаны для уменьшения путаницы. Язык можно легко спроектировать так, чтобы он не требовал явного указания ref
/ out
, и чтобы компилятор делал это неявно, но это могло бы вызвать путаницу. Аналогичным образом, выполнение этих перегрузок будет препятствовать тому, чтобы другие языки писались таким образом (поскольку CLR - это не просто C #), а просто добавило бы к общей путанице многих пользователей, и было бы менее понятно, какой метод вызывается. *