Как я могу исправить ошибку здесь.
static void Main(string[] args) { byte[] barr = GenerateRandomArrForByte(1000); WriteArr(barr); byte[] countArr = SortByteArr(barr); WriteArr(countArr); Console.ReadLine(); } static byte[] GenerateRandomArrForByte(int n) { byte[] arr = new byte[n]; Random rnd = new Random(); for (int i = 0; i < n; i++) { arr[i] = (byte)rnd.Next(0, 256); } return arr; } static void WriteArr(byte[] arr) { for (int i = 0; i < arr.Length; i++) { Console.WriteLine("arr[{0}] = {1}",i,arr[i]); } } static byte[] SortByteArr(byte[] arr) { int[] countArr = new int[256]; foreach (byte a in arr) { countArr[a]++; } int index = 0; byte[] arr1 = new byte[arr.Length]; for (byte i = 0; i < countArr.Length; i++) { int count = countArr[i]; for (int j = 0; j < count; j++) { arr1[index] = i; index++; } } return arr1; }
Что я уже пробовал:
Это принесло эту ошибку "индекс находился за пределами массива."
здесь
arr1[индекс] = i;
Richard MacCutchan
Поэтому используйте свой отладчик, чтобы узнать, какое значение было удержано index
и это будет проблемой.
Member 12662633
Я пробовал с разными массивами и не было никаких проблем
Но в данном случае все было так
arr1[1000] = 0;
ошибка произошла, когда индекс был равен 1000.
PIEBALDconsult
Конечно, это так-эти индексы варьируются от 0 до 999.
Member 12662633
но когда я меняю оба 256 на 255, это работает.