如何向未初始化的变量添加内容?c#

如何向未初始化的变量添加内容?c#,c#,C#,我想做一个cookieclicker样式的东西,每次你点击某个东西,它会给一个变量加1。我试着做int clicks=clicks+1,但它说这是使用了一个未初始化的变量。我试图设置int clicks=0,但是它说clicks已经在范围中定义了。我试着看看是否可以做一些类似于if(clicks==null)的事情,但显然它无法检查它,因为它不是一个变量。我用c#才用了一天,有人能帮忙吗 private void cookie_Click(object sender, EventArgs

我想做一个cookieclicker样式的东西,每次你点击某个东西,它会给一个变量加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等。有没有办法在表单开始时设置变量,然后开始添加单击?我好笨

int clicks = clicks + 1;
这真是荒谬。这是声明和初始化
单击
的代码,因此我们不能问“单击的值是多少?”(按顺序,以便我们可以添加一个);在我们明确为
单击指定了一个值之前,该值是未定义的

相反:

int clicks = 0;
然后,当您要增加它时:

clicks++;
这真是荒谬。这是声明和初始化
单击
的代码,因此我们不能问“单击
的值是多少?”(按顺序,以便我们可以添加一个);在我们明确为
单击指定了一个值之前,该值是未定义的

相反:

int clicks = 0;
然后,当您要增加它时:

clicks++;

您将需要执行以下操作:

int clicks = 0;//Define an integer 'clicks' and set it to 0
//and in your click handler:
clicks = clicks + 1;//Increment your count.
注:

  • Clicks是一个整数,它永远不能为null。(有关更多信息,请查阅c#原语)
  • 使用int clicks=clicks+1没有意义。在等式的右边,点击的值是多少?它还没有定义

您将需要执行以下操作:

int clicks = 0;//Define an integer 'clicks' and set it to 0
//and in your click handler:
clicks = clicks + 1;//Increment your count.
注:

  • Clicks是一个整数,它永远不能为null。(有关更多信息,请查阅c#原语)
  • 使用int clicks=clicks+1没有意义。在等式的右边,点击的值是多少?它还没有定义

    • 实现的问题是,每次调用函数时,它所做的第一件事就是将单击设置为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;
          }
      }
      

      实现的问题是,每次调用函数时,它所做的第一件事就是将单击设置为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;
          }
      }
      

      不要首先使用未初始化的变量
      int clicks=clicks+1
      毫无意义。你不能增加甚至还不存在的东西<代码>整数单击=0工作<代码>单击+++
工作<代码>单击+=1workdsCan我们可以看到您的代码吗?声明
的代码尤其单击了
?专业提示:始终显示您询问的代码。我尝试设置“int clicks=0”,但它表示单击已在范围内定义。您在声明变量时仅使用
int
关键字,以后不要使用它。“是否有方法在表单启动时设置变量,然后在单击时开始添加?”-是的。使
单击表单的
a。所讨论的代码创建了一个局部(事件处理程序的作用域)变量。它在该块外不可见,并且在离开该块的控制流中无法存活。如果将其设置为类字段,它将“持久化”该值,直到该类的实例被销毁。不要使用未初始化的变量开始
int clicks=clicks+1
毫无意义。你不能增加甚至还不存在的东西<代码>整数单击=0工作<代码>单击+++
工作<代码>单击+=1
workdsCan我们可以看到您的代码吗?声明
的代码尤其单击了
?专业提示:始终显示您询问的代码。我尝试设置“int clicks=0”,但它表示单击已在范围内定义。您在声明变量时仅使用
int
关键字,以后不要使用它。“是否有方法在表单启动时设置变量,然后在单击时开始添加?”-是的。使
单击表单的
a。所讨论的代码创建了一个局部(事件处理程序的作用域)变量。它在该块外不可见,并且在离开该块的控制流中无法存活。如果将其设置为类字段,它将“保留”该值,直到该类的实例被销毁。“查找c#primitives”和/或。“查找c#primitives”和/或。它可以工作,但我意识到这段代码在单击时运行,因此它将单击设置回0并添加1。我一直在寻找,但我真的很困惑,你怎么能在不必在点击事件上声明的情况下声明点击呢?@oops你会将其声明为一个字段,而不是一个本地字段,即将声明移到方法之外;但是,您还没有告诉我们这是什么类型的UI:前一个适用于WPF、winforms等客户端应用程序,但不适用于web,因为http生命周期是如何工作的。它是如何工作的。但我意识到这段代码在用户单击时运行的,因此它将单击设置为0,并添加1。我一直在寻找,但我真的很困惑,你怎么能在不必在点击事件上声明的情况下声明点击呢?@oops你会将其声明为字段,而不是本地-即将声明移到t之外