Dans Visual Basic, les types de données définis par l'utilisateur (Type dans VB6 ou Structure dans VB.NET) permettent de définir vos propres types composites comprenant plusieurs variables de types différents. C'est pratique pour regrouper des données connexes.
UDT (VB6):
Type Person Name As String Age As Integer Height As Single End Type Dim employee As Person employee.Name = "Alexey" employee.Age = 32 employee.Height = 1.85
Structures (VB.NET):
Structure Person Public Name As String Public Age As Integer Public Height As Single End Structure Dim employee As Person employee.Name = "Alexey"
Quand utiliser :
À l'opposé : Les classes sont utilisées lorsque l'encapsulation de la logique, l'héritage, le polymorphisme ou la mise en œuvre d'interfaces sont nécessaires.
Pourquoi les structures dans VB.NET ne peuvent-elles pas être assignées à
Nothing?
Réponse : Seules les variables de classe (objets) peuvent être assignées à Nothing, car elles stockent des références. Les structures sont des types valeur, elles contiennent toujours un ensemble de valeurs ; tenter d'assigner Nothing entraînera une erreur de compilation.
Dim s As Person = Nothing 'Erreur! Les structures ne peuvent pas être Nothing (sauf Nullable(Of T))
Histoire
Dans un ancien projet, il a été décidé de remplacer un tableau de primitives par une structure avec plusieurs champs, mais le nouveau code est devenu soudainement plus lent. Il s'est avéré que la structure était très volumineuse et était souvent copiée dans des fonctions. Si une classe avait été utilisée, seule la référence aurait été copiée, et non la structure entière.
Histoire
Après le portage de UDT de VB6 à VB.NET, un des développeurs n'a pas implémenté l'interface
ISerializablepour la structure dans l'appel distant. En conséquence, l'objet distant ne pouvait pas être sérialisé, ce qui a provoqué des échecs lors de l'interaction inter-processus.
Histoire
Dans un module de traitement de la géométrie, la structure contenait des références à des tableaux (mutables). Plusieurs instances de cette structure ont conduit à des effets inattendus, car les références à l'intérieur de la structure pointaient vers les mêmes tableaux de données - les mutations se réflectaient sur toutes les copies !