Нет никаких очевидных преимуществ с точки зрения производительности при использовании readonly
, по крайней мере, ни одно из тех, о которых я когда-либо видел, нигде не упоминалось. Это просто для того, чтобы делать то, что вы предлагаете, для предотвращения изменения после его инициализации.
Так что это выгодно тем, что помогает вам писать более надежный и читаемый код. Реальная выгода от таких вещей приходит, когда вы работаете в команде или на техобслуживании. Объявление чего-либо как readonly
сродни заключению контракта на использование этой переменной в коде. Думайте об этом как о добавлении документации так же, как и о других ключевых словах, таких как internal
или private
, вы говорите «эта переменная не должна изменяться после инициализации», и, кроме того, вы применяете ее .
Таким образом, если вы создаете класс и помечаете некоторые переменные-члены readonly
в соответствии с дизайном, то вы предотвращаете ошибку себя или другого члена команды позже, когда они расширяют или модифицируют ваш класс. На мой взгляд, это преимущество, которое стоит иметь (за счет небольшой дополнительной языковой сложности, как упоминает doofledorfer в комментариях).