WHITELIONX Ответов: 1

Индекс вне границ массива


public bool processScreenCoord(Point screenCoord, Bitmap printscreen, List<LootableItem> lootableItems, List<AttackableMonster> attackableMonsters,
       bool[,] blacklistedPixels, ClickTracker ct, bool chkGreen, bool chkBlack, bool chkItem, int blacklistOffsetX, int blacklistOffsetY, int[] intData,
       bool chkWhites, bool chkReds)

       {

           {
               {
                   //if (blacklistedPixels.Count(p => p.X == screenCoord.X && p.Y == screenCoord.Y) > 0)
                   if (blacklistedPixels[screenCoord.X + blacklistOffsetX, screenCoord.Y + blacklistOffsetY] == true)
                   {
                       return false;
                   }

                   if (searchScreenCoord(screenCoord, printscreen, blacklistedPixels, lootableItems, attackableMonsters, ct,
                       chkGreen, chkBlack, chkItem, blacklistOffsetX, blacklistOffsetY, intData, chkWhites, chkReds))
                   {
                       return true;
                   }

               }


               return false;

           }
       }


Я получаю индекс за пределами массива и понятия не имею, как его исправить

Что я уже пробовал:

Я пробовал использовать оператор try/catch, но он просто не добавлял бы без ошибок, поэтому я даже не мог отлаживать :(

F-ES Sitecore

Вы определяете blacklistedPixels как массив, но не даете ему размер (bool[,]). Вам нужно указать, сколько элементов в нем находится (например, bool[100,100])

1 Ответов

Рейтинг:
0

Patrice T

Один try/catch никогда не исправляйте ошибки.
мой Совет:
снять try/catch, и используйте отладчик, проверьте размер массива и индекс, который вы используете.
Если вы не можете запустить отладчик, вы можете, по крайней мере, распечатать информацию или сбросить ее в файл журнала.

Вы единственный, кто может что-то сделать, потому что ошибки зависят от ваших данных.