屌丝和美女根本就不是一个星球来的,一写代码就露馅了

    有这么一个函数,功能是通过传入的数据,更新一些界面显示。要求是传入的数据中,结构体成员中,字符串为NULL的、数字小于0的都保持原样不要更新。

屌丝是这么写的:

        /// <summary>
        /// 修改书本信息
        /// </summary>
        /// <param name="file"></param>
        public void UpdateBookCase(Model_File file) //传入参数叫file是个结构体
        {
            if (!DataCache.Instance.DicBookItems.Keys.Contains(file.FileID))
                return;  //如果之前没折腾过这玩意,就不管
            Model_File OldFile = DataCache.Instance.DicBookItems[file.FileID].Tag as Model_File;  //折腾过的就拿出来,叫OldFile
            
            if (file.DetailFileList != null)
            {
                OldFile.DetailFileList = file.DetailFileList;
            }
            if (file.FileName != null)
            {
                OldFile.FileName = file.FileName;
            }
            if (file.FilePath != null)
            {
                OldFile.FilePath = file.FilePath;
            }
            if (file.FileSize != null)
            {
                OldFile.FileSize = file.FileSize;
            }
            if (file.FileType != null)
            {
                OldFile.FileType = file.FileType;
            }
            if (file.SendName != null)
            {
                OldFile.SendName = file.SendName;
            }
            if (file.SendNum != null)
            {
                OldFile.SendNum = file.SendNum;
            }
            DataCache.Instance.DicBookItems[file.FileID].UpdateBookItemControl(OldFile);
        }


美女是这么写的:

        /// <summary>
        /// 修改书本信息
        /// </summary>
        /// <param name="file"></param>
        public void UpdateBookCase(Model_File file)
        {
            if (!DataCache.Instance.DicBookItems.Keys.Contains(file.FileID))
                return;
            Model_File OldFile = DataCache.Instance.DicBookItems[file.FileID].Tag as Model_File;
            
            if (file.DetailFileList == null)
            {
                file.DetailFileList = OldFile.DetailFileList;
            }
            if (file.FileName == null)
            {
                file.FileName = OldFile.FileName;
            }
            if (file.FilePath == null)
            {
                file.FilePath = OldFile.FilePath;
            }
            if (file.FileSize == null)
            {
                file.FileSize = OldFile.FileSize;
            }
            if (file.FileType == null)
            {
                file.FileType = OldFile.FileType;
            }
            if (file.SendName == null)
            {
                file.SendName = OldFile.SendName;
            }
            if (file.SendNum == null)
            {
                file.SendNum = OldFile.SendNum;
            }
            DataCache.Instance.DicBookItems[file.FileID].UpdateBookItemControl(file);
        }

严格来说只有三处天翻地覆的不同:==null和!=null ; file赋给OldFile和OldFile赋给file ; 最后更新OldFile和更新file。你会发现美女的超级逻辑,运行起来居然也是对的,在不触发内在问题的时候,可以正常使用,这也是为什么这个BUG居然潜伏了一年多,作为屌丝的我,彻底的拜倒在美女的键盘之下

你可能感兴趣的:(更新,逻辑,界面,美女)