Как объявить в теле структуры массив - C#

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

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

Всем здравствуйте. Вот объявление структуры (без выравнивания границ, то есть байт за байтом):
[StructLayout(LayoutKind.Sequential)]
struct StrData36
{
    //4 + 4x8 = 36 байт
    public Int32 t;
    public float v0;
    public float v1;
    public float v2;
    public float v3;
    public float v4;
    public float v5;
    public float v6;
    public float v7;
}
если я попытаюсь вместо последних восьми вещественных членов структуры объявить соответствующий массив, то в структуру передадутся только 4 байта его (массива) адреса, то есть размер структуры станет равным 4 + 4 = 8 байт вместо ожидаемых 36-ти. Как решить эту проблему. (В приведеном примере всего 8 однотипных членов, а если их будет 100? Писать в коде 100 строчек и создавать 100 имён?)

Решение задачи: «Как объявить в теле структуры массив»

textual
Листинг программы
[StructLayout(LayoutKind.Sequential)]
unsafe struct StrData36
{
    public Int32 t;
    public fixed float v[100];
}

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


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

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

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