QuantumNova Ответов: 2

Как вы переносите переменные в другой метод?


Здравствуйте кодеры, я пытаюсь перенести значение случайно сгенерированной переменной в другой метод on click, но потерпел неудачу с ошибкой "это имя не существует в текущем контексте", пожалуйста, помогите, если можете, спасибо.

Что я уже пробовал:

public void RandomImage()
        {
            string[] flags = { "Afghanistan", "Albania", "Algeria", "Andorra"};

            Random num = new Random();
            String correctFlag = flags[num.Next(0, flags.Length)];
        }

        private void Button1_clicked( object sender, RoutedEventArgs e)
        {
            if (Button1.Content == correctFlag) //correctFlag does not exist
            {
                 //do something
            }
        }

2 Ответов

Рейтинг:
6

OriginalGriff

Просто чтобы добавить к тому, что сказал F-ES Sitecore: не создавайте новый случайный экземпляр каждый раз, когда вы хотите его использовать: создайте его (возможно static экземпляр и используйте его вместо этого.

Поскольку случайные экземпляры инициализируются с текущим системным счетчиком тиков, когда они создаются, генерация нового внутри метода может дать вам проблемы, такие как одна и та же последовательность значений, генерируемая каждый раз, и проблема усугубляется по мере ускорения процессоров.

private static Random num = new Random();
public void RandomImage()
        {
            string[] flags = { "Afghanistan", "Albania", "Algeria", "Andorra"};
            CorrectFlag = flags[num.Next(0, flags.Length)]; 
        }


QuantumNova

спасибо :)

OriginalGriff

Всегда пожалуйста!

Рейтинг:
18

F-ES Sitecore

public void RandomImage()
        {
            string[] flags = { "Afghanistan", "Albania", "Algeria", "Andorra"};

            Random num = new Random();

            // correctFlag is defined in this function so is only available in this function
            String correctFlag = flags[num.Next(0, flags.Length)];
        }

        private void Button1_clicked( object sender, RoutedEventArgs e)
        {
            if (Button1.Content == correctFlag) //correctFlag does not exist
            {
                 //do something
            }
        }


private string CorrectFlag {get; set;} // define it at class-level as a property

public void RandomImage()
        {
            string[] flags = { "Afghanistan", "Albania", "Algeria", "Andorra"};

            Random num = new Random();
            CorrectFlag = flags[num.Next(0, flags.Length)]; // now you can use it anywhere in that class
        }

        private void Button1_clicked( object sender, RoutedEventArgs e)
        {
            if (Button1.Content == CorrectFlag) // now you can use it anywhere in that class
            {
                 //do something
            }
        }


QuantumNova

Спасибо, это действительно помогло :)

[no name]

Вау, именно то, что мне нужно, спасибо