Получаю null при вызове массива пользовательского типа, объявленного в классе C#
Хочу создать тип данных, на основании его создать массив и потом в него закинуть данные, так вот:
Объявляю свой тип:
public class TIntelHexData { public byte type; public ushort halfAddress; public byte[] data = new byte[16]; }
Создаю класс, где на основании созданного типа создаю массив, изначально не выделял память под него.
public class IntelHexHandler { private TIntelHexData[] dataSendBuff = new TIntelHexData[2000];//buffer private byte typeOfMessageHex; //тип строки intel hex private byte longOfMessageHex; //длина строки intel hex public void IntelHexSort(ref byte[] buff)//файл { } public void IntelHexSendBlock(byte size, ref SerialPort port) { } }
Создаю экземпляр класса и вызываю внутренние методы:
private async void Send_to_Flash_btn_ClickAsunc(object sender, EventArgs e)//кнопка { IntelHexHandler intelHexHandler = new IntelHexHandler(); await WaitingBeforeNextOperationAsync();//ждем флага выполнения операции intelHexHandler.IntelHexSort(ref dataBuffHex); intelHexHandler.IntelHexSendBlock(16, ref serialPort1); }
Как только происходит присваивание внутри класса в массив, получаю
NullReferenceException
, что я делаю не так? Показан кусок из метода.if (CRCcalculated == CRCget)//если чек суммы равны { dataSendBuff[counter].halfAddress = addressLSB;//ошибка null for (byte t = 0; t < temp_buff2.Length - 2; t++) { dataSendBuff[counter].data[t] = temp_buff2[t]; } dataSendBuff[counter].type = (byte)Protocol_Id.FirmBody_DATA; counter++; //сохраняем младший адрес и данные прошивки intel hex } else { /*Ошибка по crc*/ }