Если вы хотите программировать чисто функционально, ничто вас не остановит.
С другой стороны, если у вас есть какая-то программа, там нет волшебного флага, который вы можете перевернуть, чтобы заставить программу вести себя чисто функционально.
Для целых (неизменяемых)
- Если вы используете int как параметр, он передается по значению. Любые изменения не распространяются на вызывающего абонента.
- Если вы используете int, объявленный в области действия одного метода в замыкании внутри метода, тогда эта переменная int является общей. В этом случае нужно либо пообещать не изменять int (принудительно программировать), либо просто не использовать int таким образом.
А если вам действительно нужен неизменяемый int, вы видели ключевое слово readonly
?