#c#
#c#
Вопрос:
Я пытаюсь создать стиль кликера cookie, в котором каждый раз, когда вы нажимаете на что-то, оно добавляет 1 к переменной. Я пытаюсь это сделать int clicks = clicks 1
, но там сказано, что это использование неинициализированной переменной. Я попытался установить int clicks = 0
, но затем он говорит, что clicks уже определен в области видимости. Я попытался посмотреть, могу ли я сделать что-то подобное if (clicks == null)
, но, очевидно, он не может это проверить, потому что это не переменная. Я использовал c # всего около одного дня, может кто-нибудь, пожалуйста, помочь?
private void cookie_Click(object sender, EventArgs e)
{
int clicks = 0;
clicks = clicks 1;
numClicks.Text = "" clicks;
}
^ это и есть код. я также понял, что когда я нажимаю на нее, она сбрасывается на 0 и возвращается к 1, поэтому она не может перейти на 1, 2, 3 и т.д. есть ли способ установить переменную при запуске формы, а затем начать добавлять клики? я такой тупой
Комментарии:
1. Для начала не используйте неинициализированные переменные.
int clicks = clicks 1
хотя это не имеет смысла. Вы не можете увеличить что-то, чего еще даже не существует.int clicks=0;
работает.clicks
работает.clicks =1
workds2. Можем ли мы увидеть ваш код? Код, который объявляет
clicks
, в частности? Совет профессионала: всегда показывайте код, о котором вы спрашиваете.3. Я попытался установить «int clicks = 0», но затем он говорит, что clicks уже определено в области видимости , вы используете
int
ключевое слово только при объявлении переменной, не используйте его впоследствии.4. «есть ли способ установить переменную при запуске формы, а затем начать добавлять клики?» — да. Создайте
clicks
поле класса в своей форме. Рассматриваемый код создает локальную (для области видимости обработчика событий) переменную. Он не будет виден за пределами этого блока и не переживет поток управления, покидающий блок. Если вы сделаете его полем класса, оно будет «сохранять» значение до тех пор, пока экземпляр этого класса не будет уничтожен.
Ответ №1:
int clicks = clicks 1;
Действительно бессмысленно. Это код, который объявляет и инициализирует clicks
, поэтому вполне логично, что мы не можем спросить: «Чему равно значение clicks
?» (для того, чтобы мы могли добавить к нему одно); пока мы определенно не присвоили значение clicks
, значение не определено.
Вместо:
int clicks = 0;
А затем, когда вы хотите увеличить его:
clicks ;
Комментарии:
1. это работает, но я понял, что этот код запускается, когда они нажимают, поэтому он возвращает кликам значение 0 и добавляет 1. я искал, но я действительно в замешательстве, как вы можете объявлять клики, не объявляя их при событии щелчка?
2. @oops вы бы объявили его как поле , а не локальное , т. Е. Переместили объявление за пределы метода; однако вы не сказали нам, что это за пользовательский интерфейс: предыдущий будет работать для клиентских приложений, таких как WPF, winforms и т. Д., Но Не будет работать для Интернета из-за как работает жизненный цикл http
Ответ №2:
Вы захотите сделать что-то вроде этого:
int clicks = 0;//Define an integer 'clicks' and set it to 0
//and in your click handler:
clicks = clicks 1;//Increment your count.
Примечание:
- Щелчки — это целое число, оно никогда не может быть нулевым. (посмотрите примитивы c # для получения дополнительной информации)
- Использование int clicks = clicks 1 не имеет смысла. В правой части уравнения, какова ценность кликов? Это еще не определено.
Комментарии:
1. «ищите примитивы c #» и / или типы значений .
Ответ №3:
Проблема с вашей реализацией заключается в том, что каждый раз, когда вызывается функция, первое, что она делает, это устанавливает значение clicks равным 0. Вам нужно инициализировать его вне функции, чтобы избежать этого. Если вы инициализируете его в классе, он будет установлен в 0 изначально при создании класса, тогда вы можете увеличивать значение при каждом вызове функции. Не уверен, что именно ваш вариант использования, но без дополнительной информации я бы рекомендовал сделать что-то подобное.
class YourClass {
// initialize outside of the function that increases the counter
int clicks = 0;
// rest of the code in class
private void cookie_Click(object sender, EventArgs e)
{
clicks ;
// this would also work: clicks = clicks 1;
numClicks.Text = "" clicks;
}
}