Bonjour,
je voudrai connaitre les differences majeures entre une structure et une classe en C#, Et dans quel cas priviligier l'utilisation de chacune.
Merci
Bonjour,
je voudrai connaitre les differences majeures entre une structure et une classe en C#, Et dans quel cas priviligier l'utilisation de chacune.
Merci
Structure :
- Passé par défaut en valeur, pas par référence (modifier une structure dans une méthode n'affecte pas la structure originale que l'on a envoyé à ladite méthode)
Classe :
- Passée par défaut par référence (inverse de valeur)
En gros c'est ça la différence, le reste ce sont des détails.
En général ont peut se contenter de n'utiliser que des class, mais on utilise les struct quand on a besoin d'un objet avec quelques propriétés genre :
Pareil, quand on fait de l'interop (discussion avec des composants/applications natives), on utilise les struct quand on C/C++ on les utilise ... mais ça dépasse peut être le cadre de ta question ...
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 struct Anniversaire { public string person; public DateTime date; }
il y a aussi une différence au niveau de la mémoire...
LA struct est géré sur la mémoire du process là ou la classe requiert une demande mémoire à l'OS.
sinon, on ne peut pas initialiser les variables d'une structure dans leurs déclarations ni définir un constructeur par défaut... alors que pour une classe, on peut![]()
Ceci est tiré de la doc MSDN : http://msdn.microsoft.com/fr-fr/library/ms173109.aspxUne classe est un type référence. Lorsqu'un objet de la classe est créé, la variable à laquelle l'objet est assigné contient uniquement une référence à cette mémoire. Lorsque la référence d'objet est assignée à une nouvelle variable, la nouvelle variable fait référence à l'objet d'origine. Les modifications effectuées par le biais d'une variable sont répercutées dans l'autre variable car toutes deux font référence aux mêmes données.
Un struct est un type valeur. Lorsqu'un struct est créé, la variable à laquelle le struct est assigné contient les données réelles du struct. Lorsque le struct est assigné à une nouvelle variable, il est copié. La nouvelle variable et la variable d'origine contiennent par conséquent deux copies distinctes des mêmes données. Les modifications apportées à une copie n'affectent pas l'autre copie.
En général, les classes sont utilisées pour modeler un comportement plus complexe ou des données censées être modifiées après la création d'un objet de classe. Les structs conviennent mieux aux petites structures de données contenant principalement des données qui ne sont pas censées être modifiées après la création du struct.
C'est ce qui explique qu'une struct est intrinsèquement beaucoup plus rapide à manipuler qu'une classe.
Le revers de la médaille, c'est qu'on peut créer un débordement de pile du processeur si on en crée trop à la fois (faut quand même y aller fort).
Le compilateur est également assez contraignant avec les struct ce qui fait qu'elles sont fonctionnellement limitées.
A toi de choisir...
Il y aussi une différence très importante qui n'a pas été mentionnée :
Une structure ne peut pas hériter ni être héritée. (en revanche elle peut implémenter une interface).
Partager