悬赏分:5 浏览:561 次
先看段可行的代码:
using System;
class Singleton
{
private int use = 0;
private int x;
private int y;
private static Singleton []instance;
private static object lockHelp = new Object();
private static int size;
private Singleton()
{}
public static void Init(int x)
{
size = x;
instance = new Singleton[size];
}
public static Singleton getInstance()
{
if(instance == null)
{
lock(lockHelp)
{
if(instance == null)
{
instance = new Singleton[10];
}
}
}
for(int i = 0; i < size; i++)
{
lock(lockHelp)
{
if(instance[i] == null)
{
instance[i] = new Singleton();
instance[i].use = 1;
return instance[i];
}
else
{
if(instance[i].use == 0)
{
instance[i].use = 1;
return instance[i];
}
}
}
}
return null;
}
public int X
{
get
{ return x; }
set
{ x = value; }
}
public int Y
{
get
{ return y; }
set
{ y = value; }
}
public void dayin()
{
Console.WriteLine("这个实例的X为{0},Y为{1},使用计数为{2}", x, y, use);
}
public static void del(Singleton s)
{
for(int i = 0; i < size; i++)
{
if(instance[i] == s)
{
s = instance[i] = null;
break;
}
}
}
}
class Test
{
public static void Main()
{
Singleton.Init(10);
Sin