NullReferenceException mimo zadeklarowania pamieci

NullReferenceException mimo zadeklarowania pamieci
Botwinka
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Mam o to dwie funkcje:
najpierw wykonuje się ta:

Kopiuj
private void tablicaButtonow()
        {
            tab = new Button[x * y];      //alokujemy pamiec do tablicy
            //Tworzymy Buttony w tablicy glownej
            for (int i = 0; i < x; ++i)
            {
                for (int j = 0; j < y; ++j)
                {
                    tab[i + j] = new Button();
                    tab[i + j].Location = new Point(283 + i * 57, 113 + j * 57);
                    tab[i + j].Size = new Size(57, 57);      
                    tab[i + j].BackColor = Color.Transparent;
                    tab[i + j].Tag = "-1";          
                    tab[i + j].Name = "Button" + (i + j).ToString();   
                    Controls.Add(tab[i + j]);
                }
            }
        } 

Potem ta:

Kopiuj
private void playNext()
        {
            Random rand = new Random();
            for (int i = 0; i < maxk; ++i)
            {
                int r = rand.Next() % (x * y);
                tab[r].BackColor = Color.Aqua; <<<<<<<----- tu wywala mi blad
            }
        } 

nierozumiem jednego, skoro zaalokowalam wczesniej pamiec, buttony pieknie pokazuja mi sie po uruchomieniu programu to czemu po dodaniu tej linijki wyrzuca mi blad NullReferenceException? Od razu mowie ze tablica tab jest zmienna globalna w klasie

Mendoza
  • Rejestracja: dni
  • Ostatnio: dni
0

A nie wychodzisz przypadkiem indeksem poza zakres tablicy?

GA
  • Rejestracja: dni
  • Ostatnio: dni
0

Powinno być tab[iy+j] albo tab[i+jx] zamiast tab[i+j].

Botwinka
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Nie zauważyłam tak błachego błędu - Dzieki wielkie za pomoc:)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.