当前位置:编程学习 > C#/ASP.NET >>

对.net 才初步了解,希望各位高手帮忙解释下这段代码的意思,要详细哦!

writeLog是个类名,这样的写法我再其他类里可以通过  writeLog.Current.方法名  直接调用该类里的方法!希望各位高手解释下是什么意思 具体点 谢谢!


    private static volatile writeLog _instance = null;      
    private static object _syncObj = new object();        


    public static writeLog Current
    {
        get
        {
            if (_instance == null)
            {
                lock (_syncObj)
                {
                    if (_instance == null)
                    {
                        _instance = new writeLog();
                    }
                }
            }

            return _instance;
        }
    } --------------------编程问答-------------------- 单例模式,就是始终只有一个实例 --------------------编程问答-------------------- 静态方法 不需要实例化 直接类调用!!    --------------------编程问答-------------------- 就是加了一个static修符词,表示是静态类,不用new,就可以直接访问。

静态类和new的类是不同的原因在于静态类,一开始就加载进内存条,这样内存地址就固定了,但new的话,根据程序流程,那里new 就那里产生实例,内存地址不固定,只有new了之后才知道内存地址,所以,静态类,可以直接使用。而不是静态类不行 --------------------编程问答-------------------- 静态类我知道可以直接调用,但代码为何要申明 volatile   还有object!  lock 在这里锁住得是什么! --------------------编程问答-------------------- 有些还真看不懂哦
坐等高手吧 --------------------编程问答-------------------- 1 lock 锁住的是_syncObj,因此肯定锁的住
2 这里声明volatile 我认为想法有误
  1)声明volatile是指允许对_instance的实例的多线程访问修改,而单例模式已经强制要求实例化后不会修改
  2)对_instance的多线程读调用,我认为是否声明为volatile无任何效用
--------------------编程问答--------------------  public static writeLog Current
   {
   get
   {
   if (_instance == null)
   {
   lock (_syncObj)
   {
   if (_instance == null)
   {
   _instance = new writeLog();
   }
   }
   }

   return _instance;
   }
   }
这段是获取属性值Current,用get获取。先判断是否当前的实例为空,如果为空就new writeLog(),不为空就直接返回实例
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,