Il existe un readonly
en C#, mais jusqu'à présent, nous ne pouvons l'appliquer qu'aux champs, et non aux locaux ou aux paramètres.
Souvent, en Java, le final
est utilisé habituellement comme une question de style, pour faciliter la fermeture des valeurs dans les classes internes anonymes. Mais ce problème n'existe pas en C# car les méthodes/lambdas anonymes peuvent fermer sur des variables modifiables.
Des outils comme Resharper peuvent également afficher les variables/paramètres mutés dans une couleur différente, afin que vous puissiez voir les "complications" de votre méthode en un coup d'œil. Je m'en sers pour faire apparaître les noms mutés en texte vert gras ou quelque chose comme ça !
Cela ne veut pas dire que le C# lui-même ne serait pas amélioré par de nombreuses autres fonctionnalités, comme une fonction largement applicable readonly
pour aider à l'immutabilité déclarée. Mais si vous avez des méthodes courtes et que Resharper met les choses en évidence, vous n'avez pas besoin de déclarer manuellement les choses comme final/readonly/const (selon la langue). L'IDE le fait pour vous.
C'est plus logique : comme les codeurs Java l'ont découvert, la plupart des "variables" ne sont pas du tout des variables. Mais si vous devez le déclarer en ajoutant final
à tout, c'est beaucoup de bruit de mots-clés supplémentaires dans votre code. Il serait plus logique que la valeur par défaut soit final
et d'avoir un mot-clé pour faire les choses mutable
. Voici comment cela fonctionne en F#.