下载app免费领取会员
class Program
{
static void Main(string[] args)
{
TestClass.Defalut.i = 5;
//输出5
Console.WriteLine(TestClass.Defalut.i);
GC.Collect();
//输出0,表示Default已经是重新生成的,之前的对象已经被回收
Console.WriteLine(TestClass.Defalut.i);
TestClass1.Defalut.i = 5;
//输出5
Console.WriteLine(TestClass1.Defalut.i);
GC.Collect();
//输出5
Console.WriteLine(TestClass1.Defalut.i);
Console.ReadLine();
}
}
public class TestClass
{
private static readonly object locker = new object();
private static WeakReference _defalut = null;
public static TestClass Defalut
{
get
{
if(_defalut==null||!_defalut.IsAlive)
{
lock(locker)
{
TestClass tc = new TestClass();
_defalut = new WeakReference(tc);
}
}
return _defalut.Target as TestClass;
}
}
private TestClass()
{
}
public int i = 0;
}
public class TestClass1
{
private static readonly object locker = new object();
private static TestClass1 _defalut = null;
public static TestClass1 Defalut
{
get
{
if (_defalut == null)
{
lock (locker)
{
_defalut = new TestClass1();
}
}
return _defalut;
}
}
private TestClass1()
{
}
public int i = 0;
}
本文版权归腿腿教学网及原创作者所有,未经授权,谢绝转载。
上一篇:二次开发教程:WPF 模板选择器