【问题标题】:How to increment a variable that initialize with value '0' for function that gets recalled for many times?如何为多次调用的函数增加初始化为“0”的变量?
【发布时间】:2013-10-10 21:08:33
【问题描述】:

这是我的 C# 编码。每次我回忆起这个函数时,我都想增加变量计数器。每次我回忆这个函数时,有什么方法可以让计数器变量增加 1?

private void _CalculateValue()
{
     double b = 0.1;

     int counter = 0;

     a = a * b;

     counter++;    
}

【问题讨论】:

  • 代码中的计数器正在递增。虽然,这似乎没有任何用处,因为在函数完成执行后,将永远不会再触及 same 计数器变量。
  • 能否在包含该方法的类中添加一个静态字段来增加?

标签: c# function counter increment


【解决方案1】:

怎么样

class customClass
{

    int classLevelCounter = 0;

    private void _CalculateValue()
    {
        double b = 0.1;

        a = _a * b;

        classLevelCounter++;
    }

}

在您的问题中,counter 在方法中创建并在方法结束后立即销毁(失去其值),因为它的范围是唯一的方法。因此下次它会再次从 0 初始化。

在我的回答中,classLevelCounter 即使在方法结束后仍保留其值,因为它的范围是 Class

这是一个工作示例。

【讨论】:

  • 变量不是全局变量。这是类级别的。
  • @Enigmativity:完成。谢谢。
  • 我认为所有这些示例都需要将变量设为静态和/或在静态类中。我想我们需要知道每个对象的计数器是否不同,但这种方法似乎不是。
  • @Harrison:不,没有必要。看图。
【解决方案2】:

你需要这样做:

int counter = 0;

private void _CalculateValue()
{
    double b = 0.1;

    a = _a * b;

    counter++;    
}

【讨论】:

    【解决方案3】:

    只需要将变量声明移到方法之外。

    class myClass
    {    
        int counter = 0;
        private void _CalculateValue()
        {
             double b = 0.1;
             a = a * b;
             counter++;    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      相关资源
      最近更新 更多