Button_Click nie widzi obiektu z Form1()

0

Cześć. Przerabiam sobie książkę C# Rusz Głową! Doszedłem właśnie do laboratorium, w którym jest do zrobienia samodzielnie symulator psich gonitw. Problem polega na tym, że VS nie chce skompilować poniższego kodu, bettor=Janek jest podkreślone i wyświetla się komentarz 'The name Janek does not exist in current context'. Przypuszczam, że chodzi o coś prostego.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            guy Janek = new guy() {name = "Janek", cash = 50};
            }

         private void betButton_Click(object sender, EventArgs e)
           {
            bet myBet;
            myBet = new bet() { amount = (int)numericUpDown1.Value, dog = (int)numericUpDown2.Value, bettor = Janek};         
            }
}

Próbowałem znaleźć odpowiedź w książce. Poniższy kod z poprzednich przykładów działa (w kodzie kliknięcia buttona "widać" obiekt który zadeklarowałem w Form1()). Dlaczego?

public Form1()
        {
            InitializeComponent();


            lucinda = new Elephant() {Name = "Lucinda", earSize = 33 };
            lloyd = new Elephant() { Name = "Lloyd", earSize = 40 };

        }

        private void button1_Click(object sender, EventArgs e)
        {
            lloyd.whoAmI();
        }

Z góry dzięki za pomoc!

1

Bo Janek istnieje tylko w konstruktorze formy, a próbujesz dostać się do niego z innej metody.

Trzymaj się konwencji nazewnictwa w C# to kod będzie czytelniejszy. teraz masz raz PascalCase, a raz camelCase czyli tragicznie.
Klasy i właściwości zgodnie z PascalCase, zmienne lokalne camelCase.

0

OK, ale w takim razie dlaczego ten przykład ze słoniami działa? Jak rozumiem lloyd istnieje też tylko w konstruktorze formy. Czy źle to rozumiem?

1

Nie przepisałeś tutaj całej klasy więc pewnie ten lloyd to pole klasy.

0

@some_ONE dziękuję bardzo. Już rozumiem o co chodzi :) Aż wstydzę się, że zapytałem.

public partial class Form1 : Form
    {

    guy Janek;

        public Form1()
        {
            InitializeComponent();
            guy Janek = new guy() {name = "Janek", cash = 50};
            }

         private void betButton_Click(object sender, EventArgs e)
           {
            bet myBet;
            myBet = new bet() { amount = (int)numericUpDown1.Value, dog = (int)numericUpDown2.Value, bettor = Janek};         
            }
}

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