problem z tablicą jako argumentem funkcji

0

Witam wszystkich i bardzo proszę o pomoc.
Mam taki kod:


public partial class _Default : System.Web.UI.Page 
{

        ...
        public int[,] spins;

   protected void Page_Load(object sender, EventArgs e)
        {
           
        ...
        int[,] spins = new int[size, size];
        init(spins);

                 
        }

       static double deltaE(int[,] s, int i, int j, double J)
        {
           ...
        }
        static void init(int[,] s)
        {
         
         ...  
        }
        static void flip(int[,] s)
        {
         ...
         double de = deltaE(s, i, j, J);
         ...
         }

        }
        

        protected void Timer1_Tick(object sender, EventArgs e)
        {
         ...
                
                flip(spins);
               ...
        }




}

Wszystko jest prawie ok ... program się kompiluje, ale gdy timer wywołuje funkcje flip, a ta z kolei deltaE to dostaje "Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu." i debugger twierdzi, że s =null.

Bardzo proszę o pomoc. To pewnie coś trywialnego, ale nie potrafię sobie dać z tym rady. Jak to zrobić porządnie ?

0

Trochę mało kodu dałeś chyba. Co się dzieje w metodach init, flip i deltaE?
Nie próbujesz czasem operować na nieistniejących elementach tablicy spins?

0

to nie to...nie wychodzę poza indeks... cala tablica s jest równa null. W metodach init, flip i deltaE są tylko proste obliczenia. Problem polega chyba na wywołaniu funkcji z argumentem, którym jest tablica.

0

Nazwa tablicy -> spins.
Masz dwie tablice o takiej nazwie: jako zmienna w metodzie i pole w klasie.
Inicjalizujesz zmienną w metodzie. Pole w klasie chyba nie jest nigdzie zainicjowane więc się nie dziw ;)
Rozwiązanie: nie deklaruj w metodzie nowej tablicy a raczej użyj pole klasy ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1