Ho bisogno di qualcosa di più della classe System.Collections.BitArray
nella mia applicazione. In particolare, ho bisogno della matrice di bit:Uguaglianza bit array
- immutabili
- Per implementare l'uguaglianza utilizzando la semantica di valore
ho creato il mio struct
, copiando in gran parte la struttura interna del BitArray
attuazione. (Grazie, .Net Reflector!)
Non mi occupo quotidianamente di operazioni bit a bit, quindi non ho il massimo grado di fiducia nella mia implementazione di uguaglianza. (Sto superando i test unitari che sto lanciando, ma potrei mancare ai casi limite). Ho le mie soluzioni proposte come risposte di seguito. Gradirei il feedback e le risposte degli altri per qualcosa che potrebbe essere più corretto o efficiente.
Proprio come il CLR BitArray
, il campo length
si riferisce al numero di bit nella struct e il campo array
(o Array
proprietà) si riferisce alla matrice numero intero a 32 bit che rappresenta i bit.
[CHIARIMENTO] Ho scelto di prendere il percorso facile nei miei costruttori e in altri metodi in modo che non possa fare affidamento sui bit non necessari che sono zero. Ad esempio,
Not()
viene implementato da bit a bit negazione (~
) sugli elementi dell'array intero.- Un costruttore è disponibile che accetta una lunghezza e un valore booleano per inizializzare tutti i bit. Se il valore di inizializzazione è vero, ho impostato tutti gli elementi del int matrice a -1 (in complemento a due, rappresentate da tutti 1)
- Ecc
Così, ho bisogno di gestire (o, meglio, ignorarli) nel confronto. Una bella soluzione sarebbe anche quello di mantenere quei bit azzerato in ogni momento, ma nella mia situazione che si tradurrà in più lavoro (sia per il computer e per me!)
Qual è il tipo di membro di array? –
L'array è Int32 [] –