Jednorazowe wywołanie metody

0

Hej,
od dłuższej chwili staram się dojść do tego jak mogę wywołać pewną metodę tylko jeden raz. Precyzyjniej mówiąc mam taki oto kod:

 
public int Randoms()
        {
            Random liczby = new Random();
            return liczby.Next(1, 5); 
        }
        
        public Play()
        {
            InitializeComponent();
        }

        private void btn1_Click(object sender, RoutedEventArgs e)
        {

	int liczba = Ranoms();

            if (tb1.Text == liczba.ToString())
		tb3.Text = "Brawo!";			
        }

I teraz nie wiem, w którym miejscu w programie miałbym wstawić odwołanie do metody Randoms(), aby liczba została wylosowana tylko raz, a nie przy każdym kliknięciu w btn1 (tak jak osiągałem to teraz).
Mam nadzieję, że dość klarownie wytłumaczyłem co chcę osiągnąć. Jeżeli mimo wszystko jest to nie zrozumiałe to proszę o informację- postaram się wyjaśnić w inny sposób.

0

Najprościej jakoś tak:

int randomNumber = 0;

private void btn1_Click(...)
{
 if (randomNumber == 0)
  randomNumber = Randoms(); // zakładamy, że "Randoms()" nie może zwrócić zera.

 // foobar
}

lub używając statycznego pola.

Btw, Randoms to nawet nie jest słowo.

0

Mozesz tak:

public class Klasa
{
  private int liczba;
  
  public Klasa()
  {
    liczba = new Random().Next(1, 5); 
  }
}
0

Chyba jednak się nie zrozumieliśmy. Chciałbym aby natychmiast po odpaleniu programu automatyczne losowała się liczba (Randoms()) a następnie tylko po przez klikanie na btn1 użytkownik sprawdzał swoją liczbę w stosunku do wylosowanej.

0

No to losuj liczbę w konstruktorze (tak, jak podał @n0name_l), a nie metodzie kliknięcia przycisku.

0

Dziękuję za pomoc. Problem już jest rozwiązany ;)

1

Mozesz jeszcze cos takiego zrobic:

using System;
 
namespace Program
{
    class Program
    {
        private readonly int zmienna = new Random().Next(1,5);
        
        public static void Main()
        {
            Console.WriteLine("{0}", new Program().zmienna);
        }
    }
}

Co mi sie ladniejsze wydaje.

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