【发布时间】: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是静态的。 -
谢谢,海因茨·凯斯勒。