Wątek przeniesiony 2018-11-24 22:16 z C# i .NET przez Ktos.

Pole klasy zawsze zawiera wartość null – dlaczego?

0

Witam,
próbuje stworzyć grę "Wisielec" w C# i mam jeden jedyny błąd w którym kompletnie nie wiem o co chodzi. Jestem totalnym amatorem, pierwszy raz piszę coś takiego.
Otóż "Do pola Form1.slowo nigdy nie jest przypisana wartość i będzie ono mieć zawsze wartość domyślną null".
Piszę w Microsoft Visual Studio
Proszę o pomoc.

Kod:

namespace Projekt_2
{
    public partial class Form1 : Form
    {
        string slowo;
        int ile_pudel = 0;
        public Form1()
        {
            InitializeComponent();
            losuj_slowo();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string litera = textBox1.Text;
            bool czy_trafiony = false;
            int gdzie_trafiony = 0;
            for (int i = 1; i < 6; i++)
            {
                if (Convert.ToString( slowo[i]) == litera)
                {
                    czy_trafiony = true;
                    gdzie_trafiony = i;
                    if (gdzie_trafiony == 1) { lab2.Text = litera; }
                    if (gdzie_trafiony == 2) { lab3.Text = litera; }
                    if (gdzie_trafiony == 3) { lab4.Text = litera; }
                    if (gdzie_trafiony == 4) { lab5.Text = litera; }
                    if (gdzie_trafiony == 5) { lab6.Text = litera; }
                    if (czy_trafiony == false)
                    {
                        ile_pudel = ile_pudel + 1;
                        if (ile_pudel == 1) { pictureBox1.Image = Projekt_2.Properties.Resources._1; }
                        if (ile_pudel == 2) { pictureBox1.Image = Projekt_2.Properties.Resources._2; }
                        if (ile_pudel == 3) { pictureBox1.Image = Projekt_2.Properties.Resources._3; }
                        if (ile_pudel == 4) { pictureBox1.Image = Projekt_2.Properties.Resources._4; }
                        if (ile_pudel == 5) { pictureBox1.Image = Projekt_2.Properties.Resources._5; }
                    }

                }
            }

        }

        private void lab1_Click(object sender, EventArgs e)
        {

        }


        private void losuj_slowo()
        {
            string[] slowa = { "krokusy", "lilput", "marchew", "selerek", "krakers", "klakier" };
            int ile_slow = slowa.Length;
            Random gen = new Random();
            int indeks_slowa = gen.Next(0, ile_slow);
            slowo = slowa[indeks_slowa];
            lab1.Text = Convert.ToString(slowo[0]);
            lab6.Text = Convert.ToString(slowo[6]);



        }
    }
}
0

Nie znam c# i dziwne te polskie komunikaty błędów :|
Ale wygląda na to, że stworzyłeś gdzieś w tym Form1 zmienną "slowo" i nie przypisałeś do niej nigdy żadnej wartości. W innym miejscu pewnie ją używasz, skoro leci taki błąd. Jeśli chcesz użyć jakiejś zmiennej to powinieneś przypisać jej jakąś wartość. Np String title = "Some title"; Czyli przypisanie zmiennej title wartości "Some title"

0

Słabo to widzę :/ Tylko ten wyraz "slowo" jest podkreślony na zielono i ma wartość null, tak to bym miał wszystko gotowe

0

Problem polega na tym, że jeżeli nigdy nie odpalisz funkcji losuj_slowo(), to twoja zmienna slowo (pole klasy Form1) będzie miała wartość null. Ostrzeżenie mówi dokładnie o tym, abyś albo nadał mu wartość domyślną (inną niż null) albo pamiętał, że coś takiego może się zdarzyć i jeżeli kiedyś odwołasz się do tego pola możesz dostać wyjątek NullReferenceException.

0

Dodałem przed "string" słowo private, czyli "private string slowo". Pomoże ?

0

Nie... kod pewnie skopiowany od kolegi? Poczytaj o zmiennych

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