Comprendre l'Union en C#
En C, le mot-clé 'union' est utilisé dans les structures pour permettre à plusieurs variables d'occuper la même mémoire physique emplacement. Cependant, lors de la traduction de ce concept en C#, une approche différente est nécessaire.
Pour les traductions C#, la solution réside dans l'utilisation de dispositions de champs explicites. Cette fonctionnalité vous permet de spécifier explicitement la disposition de la mémoire d'une structure, y compris le positionnement des différentes variables membres.
Exemple de traduction :
Considérez la structure C suivante :
struct Foo { float bar; union { int killroy; float fubar; } as; }
Pour traduire cette structure en C#, vous utiliserez des dispositions de champs explicites comme suit :
[StructLayout(LayoutKind.Explicit)] public struct SampleUnion { [FieldOffset(0)] public float bar; [FieldOffset(4)] public int killroy; [FieldOffset(4)] public float fubar; }
Détails d'implémentation :
Remarque : Un seul des "killroy" ou "fubar" peut être utilisé à la fois. Toute tentative d'accès aux deux entraînera une corruption de la mémoire.
Informations supplémentaires :
Pour une meilleure compréhension des unions et des dispositions de champs explicites, reportez-vous aux ressources suivantes :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!