Индекс за пределами диапазона

Почему?

 public static int RandItemShop()
        {
            int randItemShop = RandInt.Next(0, (shopPool.Count));
            return randItemShop;
        }
        public void ShopReload()
        {
            if (shopPool[RandItemShop()] is INamed named) //ошибка в данной строке
            {
            }
        }

shopPool.Count равняется 11

А shopPool это что, как объявлено и создано?

public static List<object> shopPool = new List<object>();

shopPool.Add(fixture);
shopPool.Add(sword);
shopPool.Add(FishingKnife);
shopPool.Add(stick);
shopPool.Add(stone);
shopPool.Add(metalBowl);
shopPool.Add(ButcherCleaver);
shopPool.Add(apple);
shopPool.Add(onion);
shopPool.Add(sandals);
shopPool.Add(map);

Может где-то существует другой экземпляр с тем же именем? Например, локальная переменная, или если этот код в разных классах.

public class Program
{
	static int a = 84;
	
	public static void Main()
	{
		int a = 42;
		
		Console.WriteLine(a); // 42
		
		f();	
	}
	
	public static void f()
	{
		Console.WriteLine(a); // 84
	}
}

Подозрительно, что первая функция static, а вторая нет )

Вообще для начала стоит просто добавить отладочный вывод (Debug.WriteLine, MessageBox, …) shopPool.Count в обе функции, или отладчиком посмотреть.

1 лайк

Добавил static во вторую функцию, все равно не работает.Также проверил что переменная randItemShop нигде не используется

Вообще для начала стоит просто добавить отладочный вывод ( Debug.WriteLine , MessageBox , …) shopPool.Count в обе функции, или отладчиком посмотреть.

Буду пробовать.

Спасибо за помощь! Я понял в чем была моя тупая ошибка. Я поставил выполнение функции до добавления объектов в лист…