#region using directives
using system;
using system.collections.generic;
using system.text;
using system.reflection;
#endregion
namespace genericssingleton
{
/// <summary>
/// 單例范型
/// </summary>
/// <typeparam name="t"></typeparam>
public class singleton<t>
{
private static t _instance;
public singleton()
{
}
public static t instance
{
get
{
if (_instance == null)
{
//獲得實(shí)例,使用這個方法的前提是t要有公有的、無參數(shù)的構(gòu)造函數(shù)
_instance = (t)system.activator.createinstance(typeof(t));
}
return _instance;
}
}
}
/// <summary>
/// 要實(shí)現(xiàn)單例的類
/// </summary>
public class foo
{
private int count = 0;
public int count
{
get
{
count++;
return count;
}
}
}
/// <summary>
/// 主函數(shù)
/// </summary>
class program
{
static void main(string[] args)
{
//連續(xù)調(diào)用三次如果值是遞增的話說明三次調(diào)用都是同一個實(shí)例
console.writeline(singleton<foo>.instance.count);
console.writeline(singleton<foo>.instance.count);
console.writeline(singleton<foo>.instance.count);
console.readline();
}
}
}
新聞熱點(diǎn)
疑難解答
圖片精選