淡忘速度快的惊人

有一个多月没有自己写过类什么的了,一直都在用NBear的gateways在那里做些表面功夫。今天开始写我的新项目 BabyStreet 的代码,写了一个数据提供类,没什么实际的意义的类,就是获得那个static的 Linq to sql  的 DataContent,我居然写出了下面的代码:

   public static class DataProvider
   {
        public static BabyStreetSqlData db;
        private static object _lock = new object();

        public DataProvider()
        {
            if (db == null)
            {
                lock (_lock)
                {
                    // Do this again to make sure db is still null
                    if (db == null)
                    {
                        db = new BabyStreetSqlData();
                    }
                }
            }
        }
    }

这个有明显的错误了,在一个static的类里面写上一个构造函数,有点意思啊。还有居然忘记了如果这样创建一个对象

BabyStreetSqlData cb=DataProvider.db;

后这个对象是copy了DataProvider.db还是直接引用到DataProvider.db。写个函数测试一下:

    public class Baby
    {
        public string Name { get; set; }
        public string Age { get; set; }

        public Baby(string name, string age)
        {
            this.Name = name;
            this.Age = age;
        }
    }
    public static class BabyProvider
    {
        public static Baby Jesse = new Baby("jesse","23");
    }
    class Program
    {
        static void Main(string[] args)
        {
            Baby Kucao = BabyProvider.Jesse;
            Console.WriteLine ("BabyProvider.Jesse Information:");
            Console.WriteLine(BabyProvider.Jesse.Name );
            Console.WriteLine("Kucao Information:");
            Console.WriteLine(Kucao.Name);
            Kucao.Name = "Kucao";
            Console.WriteLine("=========================================");
            Console.WriteLine("BabyProvider.Jesse Information:");
            Console.WriteLine(BabyProvider.Jesse.Name);
            Console.WriteLine("Kucao Information:");
            Console.WriteLine(Kucao.Name);
            Console.ReadLine();
        }
    }

运行后的结果为:

BabyProvider.Jesse Information:
jesse
Kucao Information:
jesse
=========================================
BabyProvider.Jesse Information:
Kucao
Kucao Information:
Kucao

看来是引用的。好多的都忘记了,郁闷啊,恶补吧。

posted @ 2007-12-23 20:06 JesseZhao 阅读(401) 评论(3)  编辑 收藏 所属分类: D 感*悟

  回复  引用  查看    
#1楼 2007-12-24 00:06 | Jeffrey Zhao      
babystreet和babytree有关系吗?
还有:
db = new BabyStreetSqlData();
if (db == null) throw new NullReferenceException("BabyStreetSqlData DataContent创建失败");
这个if永远不可能成立吧……
  回复  引用  查看    
#2楼 [楼主]2007-12-24 13:22 | JesseZhao      
@Jeffrey Zhao
错了,写错了,脑子那会短路
嘿嘿
  回复  引用    
#3楼 2008-02-16 10:17 | QB [未注册用户]
DataProvider跟下面的函数是没关系的吧........晕!

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
博客园首页

新闻频道

社区

小组

博问

网摘

闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-24 13:23 编辑过
成果网帮您增加网站收入


相关链接:

历史上的今天:
2006-12-23 怎么节省安装 VS.net 2005 Sp1的时间