Bonjour,
Quand on vient du monde C++ des années 90, la différence entre struc et class est assez évidente :
- struct n'a pas de méthode
- struct est un type valeur
A l'inverse class possède des méthodes, un constructeur et est un type référence.
Sauf qu'avec l'évolution du C# et probablement des autres langages, la différence se réduit de plus en plus...
En vrac :
- une struct peut avoir des méthode et un constructeur
- une class peut maintenant être marquée "type valeur"
- une class n'a plus besoin d'avoir de constructeur (écrit explicitement tout du moins)
La seule vraie grosse différence qui reste, pour moi, c'est qu'un struct ne peut avoir que des attributs, et pas de propriétés (donc pas se setter/getter).
Et du coup, l'intérêt (ou utilité) de l'un et de l'autre ne me semble plus aussi arrêté qu'avant.
J'ai pour habitude, lorsque par exemple je parcours des données à partir d'une requête SQL par exemple, d'utiliser des structs comme variables temporaire avant de les dispatcher dans des objets spécialisés.
Mais il m'arrive parfois d'avoir besoin de valider en entrée les données (ou les transformer), ce qui m'oblige à le faire dans le constructeur ou dans une méthode Init() par exemple. Le problème c'est du coup que si quelqu'un vient écrire directement dans un attribut il peut passer ouvre le contrôle.
Donc petit à petit, je remplace mes struct par des class puisque ça permet de garantir une meilleur intégrité des traîtements.
Mais au final, c'est quoi l'intérêt des struct en 2022 ?