#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)
疑難解答
圖片精選