鲜荣彬
Herry

1、没有考虑线程安全

public class Singleton
{
    private static Singleton _instance = null;
    private Singleton(){}
    public static Singleton CreateInstance()
    {
        if(_instance == null)
        {
            _instance = new Singleton();
        }
        return _instance;
    }
}

2、考虑了线程安全,不过有点烦,但绝对是正规写法,经典

public class Singleton
{
    private volatile static Singleton _instance = null;
    private static readonly object lockHelper = new object();
    private Singleton(){}
    public static Singleton CreateInstance()
    {
        if(_instance == null)
        {
            lock(lockHelper)
            {
                if(_instance == null)
                     _instance = new Singleton();
            }
        }
        return _instance;
    }
}
public class Singleton
{
    private Singleton(){}
    public static readonly Singleton instance = new Singleton();
}  

 (二)一道面试题

public class A
    {
        public int x = 1;
        public A()
        {
             PrintFields();
            Console.WriteLine("x={0}",x);
        }

        public virtual void PrintFields() { }

    }

    public class B:A
    {
        int y;
        public B()
        {
            y = -1;
        }

        public override void PrintFields()
        {
            Console.WriteLine("x={0},y={1}",x,y);
        }
    }

B b=new B()

 

  

posted on 2015-12-22 15:34  Herry彬  阅读(930)  评论(0编辑  收藏  举报