.NET 4.x Как прочесть массив из словаря (Dictionary) - C#

Узнай цену своей работы

Формулировка задачи:

У меня есть словарь, состоящий из одной пары: число int и массив float. Я не могу понять как мне прочитать значения float по индексу. Например в словарь записан порядковый номер (int) и массив float. Как мне внутри того же номера обращаться к разным элементам массива по индексам? И главный вопрос, есть ли способ скопировать этот массив float из словаря в обычный массив? Что я пытался:
            Dictionary<int, float[]> inv_bind_mats = new Dictionary<int, float[]>();
            float[] Farr = new float[16];
 
            string path2 = Application.StartupPath + "\\skeletons" + skeletonName + ".bone_inv_trans_mats";
 
................................................................................
 
using (BinaryReader inv_trans_mats = new BinaryReader(File.Open(path2, FileMode.Open, FileAccess.Read, FileShare.Read), Encoding.ASCII))
            {
                inv_trans_mats.BaseStream.Seek(4, SeekOrigin.Begin);
                bonesCount = inv_trans_mats.ReadUInt32();
                for (int i = 0; i < bonesCount; i++)
                {
                    for (int j = 0; j < 16; j++)
                    {
                        if (j < 12)
                        {
                            Farr[j] = inv_trans_mats.ReadSingle();
                        }
                        else if (j >= 12)
                        {
                            Farr[j] = 0.0f;
                        }
                    }
                    inv_bind_mats.Add(i, Farr);
                }
            }
            MessageBox.Show(inv_bind_mats.Values.ElementAt(0).ToString());
        }
В этом коде я читаю двоичный файл и из него записываю в словарь матрицу 3х4 для каждой кости. В файле пока что 50 костей и 12 значений для каждой. Кол-во костей будет разное, а вот матрица всегда 3х4. Для моих нужд нужна матрица 4х4 поэтому я ее дополняю нулями.
EDIT: Разобрался, но почему-то вместо того чтобы для каждой кости записывать свой массив, этот код записывает один и тот же (последний) массив во все кости.

Решение задачи: «.NET 4.x Как прочесть массив из словаря (Dictionary)»

textual
Листинг программы
float[] Farr = new float[16];

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы