Vous ne pouvez pas utiliser un tableau. Ou plutôt, vous auriez besoin de choisir une taille, et si vous avez besoin de plus, alors vous devrez allouer un nouveau tableau plus grand, copier les données de l'ancien dans le nouveau, et continuer comme avant (jusqu'à ce que vous dépassiez la taille du nouveau ...)
Généralement, vous iriez avec l'une des classes de collection - ArrayList, Liste <>, LinkedList <>, etc - qui dépend beaucoup de ce que vous cherchons; Liste vous donnera la chose la plus proche de ce que j'ai décrit initialement, tandis que LinkedList <> permettra d'éviter le problème des réallocations fréquentes (au prix d'un accès plus lent et une plus grande utilisation de la mémoire).
Exemple:
List<float[]> _calibrationSet = new List<float[]>();
// ...
while (recordsToRead)
{
float[] record = new float[SensorCount];
for (int i = 0; i < SensorCount; i++)
{
record[i] = calibrationArrayView.ReadFloat();
}
_calibrationSet.Add(record);
}
// access later: _calibrationSet[record][sensor]
Oh, et il est intéressant de noter (comme Grauenwolf a fait), que ce que je fais ici ne vous donne pas la même structure de mémoire comme une seule, un tableau multidimensionnel serait - sous le capot, c'est un tableau de références à d'autres tableaux qui contiennent réellement les données. Cela accélère considérablement la construction du réseau en rendant la réaffectation moins coûteuse, mais peut avoir un impact sur la vitesse d'accès (et, bien sûr, sur l'utilisation de la mémoire). Que ce soit un problème pour vous dépend beaucoup de ce que vous ferez avec les données après leur chargement ... et s'il y a deux cents enregistrements ou deux millions d'enregistrements.
Un peu de surcharge, en fait: ArrayList() va encadrer les flottants, ce qui sera lent et la mémoire intensive ... –