Вы не можете использовать массив.
Или, скорее, вам нужно будет выбрать размер, и если вам понадобится больше, вам придется выделить новый, больший массив, скопировать данные из старого в новый и продолжить как раньше (до Вы превышаете размер нового ...)
Как правило, вы должны использовать один из классов коллекции - ArrayList, List <>, LinkedList <> и т. Д., Который во многом зависит от того, что вы ищете; List даст вам наиболее близкую информацию к тому, что я описал изначально, в то время как LinkedList <> позволит избежать проблемы частого перераспределения (за счет более медленного доступа и большего использования памяти).
Пример:
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]
О, и стоит отметить (как это сделал Grauenwolf ), что то, что я здесь делаю, не дает вам ту же структуру памяти, что и один многомерный массив - под капотом Это массив ссылок на другие массивы, которые на самом деле содержат данные. Это ускоряет построение массива за счет удешевления перераспределения, но может влиять на скорость доступа (и, конечно, на использование памяти). Является ли это проблемой для вас, во многом зависит от того, что вы будете делать с данными после их загрузки ... и от того, существует ли двести записей или два миллиона записей.