Par défaut structures en C# sont implémentées avec [StructLayout( LayoutKind.Sequential )]
pour des raisons essentiellement liées au fait que ce type d'objets est couramment utilisé pour COM Interop et que leurs champs doivent rester dans l'ordre où ils ont été définis. Les classes ont LayoutKind.Auto
défini.
Ma question est de savoir si je dois déclarer explicitement mes structures comme étant [StructLayout( LayoutKind.Auto )]
et cela me donnerait-il des avantages par rapport à la version par défaut ? Je veux dire que si les structs sont initialisés sur pile Est-ce que cela fera une différence ? GC n'a pas à les déplacer ? De même, cela sera-t-il utile lorsque les structs sont initialisés sur le tas, c'est-à-dire lorsqu'ils font partie d'une classe ?