C# Zmienna statyczna

0

Witam.Mam problem ze zmienną statyczną w C#.W poniższym kodzie chciałbym tylko raz podczas pierwszego odwołania do funkcji odczytać pierwszy element tablicy akcja i robie to z pomocą zmiennej statycznej Zmienne.sterowanie, ale funkcja zwraca wtedy błąd, odwołanie się do nieistniejącego obiektu.Gdy omijam fragment z if wszystko działa. Gdzie popełniam błąd?Można to zrobić jakoś inaczej?

 
        public static string testowanie_1()
    {
        
        string sciezka;
        string plik_testowy;
        string[] akcja = new string[300];
        int wygrany;

        if (Zmienne.sterowanie == 0)
        {

            //Console.Write("Podaj ścieżkę do pliku testowego, który chcesz uruchomić:");
            //sciezka = Console.ReadLine();

            StreamReader sr = File.OpenText("D:/Studia/stu/funkcja_testowa_1.txt");
            plik_testowy = sr.ReadToEnd();

            akcja = plik_testowy.Split(';');
            wygrany = int.Parse(akcja[0]);
            if (wygrany == 1)
            { Console.Write("Powinien wygrać gracz nr 1."); }
            else
            { Console.Write("Powinien wygrać gracz nr 2."); }
        }         
            Zmienne.sterowanie++;
            string zmienna = akcja[Zmienne.sterowanie]; 
            zmienna = zmienna.ToString().Trim().Replace(@"[^0-9,]", "");    
            return zmienna;
        }        }
0

Twój pierwszy błąd to to, że zadając pytanie nie zdradziłeś co to jest: Zmienne i jaka jest relacja tego symbolu do funkcji, którą podałeś.
Twój drugi błąd to niesformatowany kod, więc trzeba się namęczyć by zobaczyć gdzie się kończy blok po if.

0

skoro plik jest wczytywany raz, to możesz go umieścić np. w konstruktorze twojej klasy

0

Funkcja jest uruchamiana kilka razy, chodzi o to aby za pierwszym razem wykonywał się cały kod, a potem tylko jego część. Co do uwag kolegi to zapamiętam i będe go wyraźniej formatował, ale opis zmiennej jest zawarty w pytaniu.

0
nieznamsie napisał(a)

funkcja zwraca wtedy błąd, odwołanie się do nieistniejącego obiektu

Która funkcja i w którym miejscu zwraca ten błąd?

maszynaz napisał(a)

skoro plik jest wczytywany raz, to możesz go umieścić np. w konstruktorze twojej klasy

To jest BARDZO ZŁE rozwiązanie. Konstruktor klasy ma być prosty, lekki i nie zawierać żadnych operacji rzucających wyjątki.
W takiej sytuacji najpierw odczytuje się dane z pliku, a następnie przekazuje je w konstruktorze do tworzonego obiektu klasy.

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