Avec un constructeur primaire :
Il est important de noter que les paramètres de la classe ne sont pas pas de la classe. Le code suivant ne sera pas compilé s'il est utilisé dans SimpleClass, car foo et bar ne sont pas disponibles sur "this".
L'utilisation d'un constructeur primaire peut améliorer de manière significative la lisibilité de votre code, car il supprime une grande partie de l'infrastructure de code autour des constructeurs de classe. Par exemple, comparez la facilité de lecture de SimpleClass par rapport à une classe fonctionnellement équivalente qui n'utilise pas de Primary Constructor.
Sans constructeur primaire :
Les constructeurs primaires peuvent également être utilisés pour les types "struct" et "record". Cela peut faciliter la création et la maintenance des DTO... Par exemple.
Nous suggérons de garder à l'esprit les points suivants lors de l'utilisation d'un constructeur primaire :
Les paramètres de la classe ne sont pas directement disponibles pour les classes enfants. Ainsi, le code suivant ne sera pas compilé, car bar et foo ne sont pas disponibles pour la classe enfant, SimpleChildClass.
Si vous souhaitez remplacer le constructeur, les paramètres de classe doivent être inclus. Pour inclure les paramètres de classe, vous devez utiliser this() sur le constructeur surchargé. Si votre classe a plusieurs constructeurs surchargés, l'utilisation d'un constructeur primaire n'est peut-être pas la meilleure solution.
Les paramètres de classe ne sont ne sont pas pas des champs en lecture seule. Si vous utilisez ces paramètres directement avec l'injection de dépendances, il est possible de provoquer des effets de bord qui entraîneront des erreurs d'exécution. Par exemple :
Si FooUp() est appelé avant FooBar(), alors une NullReferenceException sera levée par FooBar(). Il est préférable d'utiliser un champ en lecture seule en conjonction avec le constructeur primaire.
Cette classe ne se compilera pas parce que _logger est en lecture seule et que FooUp ne peut pas assigner une valeur à _logger, empêchant ainsi FooBar de lancer une NullReferenceException. Les constructeurs primaires sont un petit sucre syntaxique qui a été ajouté à C#12 et qui promet de rendre vos classes un peu plus faciles à lire et d'économiser du code de constructeur répétitif. Cependant, ils ne conviennent pas à toutes les situations et il convient de faire preuve de prudence lorsque vous utilisez ces paramètres dans votre code. Les développeurs d'Improving sont passionnés par ce qu'ils font. Ils sont extrêmement compétents dans tous les domaines du codage et du développement d'applications. Quand avez-vous mis à jour vos applications pour la dernière fois ? Ce blog nous montre que les changements sont rapides, ce qui signifie que les applications peuvent rapidement devenir obsolètes. Il est essentiel de rester à l'affût de ces changements pour maintenir la bonne performance de vos applications. Si vos applications sont obsolètes, remplissez ce formulaire et quelqu'un vous contactera.