Допустим есть массив данных, произошла какая-то математическая операция над этими байтами и нам надо сохранить результат в в другой массив, тоже состоящий из байт. Я делаю это в цикле.
public static byte[] bitData;
public static byte[] testData = { };
// Математические операции
for (int i = 0; i < bitData.Length; i++) {
testData[i] = (byte)(bitData[i]);
}
При выполнении данного кода возникает ошибка: "Индекс находился вне границ массива." Подскажите, как решить данную проблему, чтобы появилась возможность записать эти результаты в виде байт в другую переменную. Спасибо!
Массивы в C# не поддерживают изменение вместительности.
Строчку
byte[] testData = { };
компилятор разворачивает в
byte[] testData = new byte[0];
т. е. он создает массив вместительностью 0 элементов.
У вас есть, как минимум, 2 решения:
можно создать массив нужной вместительности перед тем как заполнять его
testData = new byte[bitData.Length];
for (int i = 0; i < bitData.Length; i++) {
testData[i] = bitData[i];
}
либо использовать готовую коллекцию, поддерживающую динамическое изменение вместительности
var testData = new List<byte>();
for (int i = 0; i < bitData.Length; i++) {
testData.Add(bitData[i]);
}
обратите внимание, что здесь используется метод Add
который сначала увеличивает вместительность коллекции, а затем добавляет указанное значение последним элементом. Использование индексатора выбросит такое же исключение как и получаете вы.
Для чего вы кастуете byte в byte (byte)(bitData[i]);?
По делу:
Для копирования данных из массива в массив используется (обычно) класс Array и метод Copy:
byte[] array = {1,2};
byte[] newArray = new byte[array.Length];
Array.Copy(array, newArray, array.Length);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
По задумке, получаем ссылку на фото, переносим его в папку с ресурсами, и вставляем фото в качестве заливки для EllipseОшибка:
Изучаю контейнеры, а именно AutofacВ моем примере у меня есть данные datatable, есть контейнер и два класса, реализующие один интерфейс, по логике...
Делаю свою консоль на c# и winforms, столкнулся с проблемой : для реализации методов Read и ReadLine надо подождать, пока пользователь введет данные(если...
У меня есть словарь, в котором хранятся всевозможные биграммы(a:b,b:c,a:b,a:c)В результативном словаре должны хранится ключ-значения