Avatar ·

Quand utiliser struct au lieu de class en C# : comprendre les types valeur et les types référence

Bonjour à tous ! J'écris en C# depuis environ un an, et je suis constamment tourmenté par une question : quand faut-il utiliser struct et quand class ? J'ai l'impression de comprendre la différence — struct est un type valeur, et class un type référence. Mais dans la pratique, je suis souvent perdu. Par exemple, j'ai ce code : ```csharp public class PointClass { public int X { get; set; } public int Y { get; set; } public PointClass(int x, int y) { X = x; Y = y; } } public struct PointStruct { public int X { get; set; } public int Y { get; set; } public PointStruct(int x, int y) { X = x; Y = y; } } ``` Les deux semblent faire la même chose. Mais j'ai lu que struct est plus rapide pour les petits objets, car ils sont stockés dans la stack, tandis que class l'est dans la heap. D'un autre côté, j'ai entendu dire qu'il ne faut pas utiliser struct avec les collections, LINQ ou l'asynchronie, car ils commencent à être copiés partout et les performances chutent. De plus, je ne comprends pas pourquoi on ne peut pas déclarer un constructeur sans paramètres dans struct.