0 votes

Classe intégrée pour sérialiser/désérialiser un ensemble de drapeaux.

J'ai besoin de stocker un tableau de drapeaux dans une chaîne de caractères. J'ai envisagé d'utiliser BitArray, mais j'ai remarqué qu'il n'existe pas de méthode intégrée pour écrire ou lire un char[] ou un int[]. Je peux écrire ce code assez facilement, mais je préférerais utiliser une méthode intégrée s'il en existe une.

Existe-t-il des méthodes .NET intégrées qui permettent de gérer cela ?

2voto

LBushkin Points 60611

Si vos drapeaux sont représentés sous la forme d'un enum défini, vous pouvez simplement les convertir en l'un des types intégraux pris en charge par les enums (int, long, etc.). Vous pouvez ensuite désérialiser l'enum à partir de sa représentation de valeur en utilisant :

// define a Flags enumeration...
[Flags] enum MyEnum { First = 1, Second = 2, Third = 4, };

MyEnum originalValue = MyEnum.First | MyEnum.Second;
int storedValue = (int)originalValue;  

// value serialized into storage somewhere...

// later on ...
// deserialized however you need...
int restoredValue = ReadValueFromDataStore(); 
// convert back into a typesafe enum...
MyEnum recoveredValue = Enum.Parse( typeof(MyEnum), restoredValue );

0voto

dmo Points 1886

Le site Convertisseur de bits possède certaines de ces fonctionnalités.

0voto

Simon Svensson Points 11667

Le site Tableau de bits prend en charge Int32[], vous pouvez utiliser la fonction Constructeur qui accepte un int[] pour l'initialisation, et CopyTo(Tableau tableau, Int32 index) . L'implémentation actuelle de CopyTo supporte l'écriture sur Boolean[], Byte[] et Int32[] selon msdn.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X