***** 关于Singleton(单件模式)的静态变量的执行问题,走过路过的请进来看看
程序源码如下
using System;
using System.Data;
using System.Threading;
namespace Singleton_Pattern
{
public sealed class CountSingleton
{
static readonly CountSingleton iuCount = new CountSingleton();
private int totNum = 0;
private CountSingleton()
{}
public void Add()
{
this.totNum++;
}
public int GetValue
{
get
{
return this.totNum;
}
}
public static CountSingleton Instance
{
get
{
return iuCount;
}
}
}
public class EntryProgram
{
public static void Main()
{
for(int i = 0; i < 3; i++)
{
CountSingleton singleton = CountSingleton.Instance;
singleton.Add();
Console.WriteLine(singleton.GetValue);
}
Console.ReadLine();
}
}
}
我的问题
1.每一次执行for语句时CountSingleton类会依次执行以后语句
static readonly CountSingleton iuCount = new CountSingleton();
private int totNum = 0;
private CountSingleton()
{}
static readonly CountSingleton iuCount = new CountSingleton();
静态类的初始化执行了两次,是因为new CountSingleton();的原因才执行的两次吗,具体是什么原因
2.每1次以后再执行for语句时不再执行问题1中的变量初始化语句,直接返回CountSingleton.Instance属性提供的实例,为什么只有第一次才执行静态成员的初始化工作?