【问题标题】:How static variable can retain incremented value [duplicate]静态变量如何保留增量值
【发布时间】:2018-06-23 10:01:13
【问题描述】:

我在一个类中创建了一个静态变量并在构造函数中递增,以为每当我为该类创建一个实例时,该静态变量就会被重置为0。令我惊讶的是,我第一次创建对象时类,静态变量(计数器)递增到 1。当我第二次为类创建对象时,静态变量保留递增的值(1)。这是静态的行为吗?

class Singleton
   {
   private static int counter = 0;
   Public Singleton()
   {
       counter++;
       Console.WriteLine("Counter-" + counter);
   }
   }

 static void Main(string[] args)
   {
       Singleton objSingleton1 = new Singleton();
       objSingleton1.getMessage("Hi This is my first message!");
       Singleton objSingleton2 = new Singleton();
       objSingleton2.getMessage("Hi This is my second message!");
   }

【问题讨论】:

  • 写例子时,请写一个真实的而不是伪代码。我还建议为静态的含义找到一个好的 C# 教程。
  • 如果您正在处理一个正确实现的单例,那么构造函数将只运行一次并且您将只处理一个实例。但是,您尚未包含所有代码,因此我们无法确定您看到这种行为的原因。
  • 我不确定“getInstance”是做什么的。从上面显示的代码中,我看不到单例。假设 getInstance 创建了 Singletonclass 的新实例,则 countervariable 会随着每个新实例而递增。 counter 的声明行中的 =0assignment 仅在程序启动时执行一次,因为 counter 是静态的。
  • 谢谢,海因茨·凯斯勒。

标签: c# .net static


【解决方案1】:

简单地说,您将创建的所有实例都将共享静态变量,并且它将一直存在,直到应用程序从内存中卸载

【讨论】:

    猜你喜欢
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多