(井底之蛙)慚愧丟人的兩段代碼---希望以后多多長進,警醒自己


井底之蛙

 

2012-04-10 20:50 今天又來看看這個代碼。錯誤地方有很幾處。這個代碼主要是因為不熟悉.NET中數組和LIST之間的轉換。
目的:想排除所有不等項。然后再賦值給原對象。
先說說第二個。第二個就是一個錯啊。特別是第二個FOR循環。簡直把自己的臉丟完了。

第一個也是個錯。啥都不說了。丟死人了。


最后寫法。參考以上留言的各位。



var list=new List<Common.Other.Cookies>();
foreach (Common.Other.Cookies cookiesTemp in cartJson.Cookies)
{
if(cookiesTemp.GoodsNo!=GoodsNo)//刪除相等的。
{
list.Add(cookiesTemp);
}
}
cartJson.Cookies=list.ToArray();


//各位各位。實在是一點點泡沫把我吹的不知道自己是誰了。慚愧啊慚愧啊。

最慚愧的。雖然立即就把代碼改成上面那樣,但是直到今天,我才從心里真正明白自己那一點點經驗就自大的心態。

感謝各位的點醒。這篇錯誤代碼要永遠留着。

 

 

         int i = 0; bool isDel = false;
                foreach (Common.Other.Cookies cookies1 in cartJson.Cookies)
                {
                    if (isDel)
                    {
                        cookiesArray[i - 1] = cookies1;
                    }
                    else
                    {

                        if (cookies1.GoodsNo == GoodsNo)
                        {
                            isDel = true;
                            continue;
                        }
                        cookiesArray[i] = cookies1;

                    }
                    i++;
                }
                //int i = 0;
                //foreach (Common.Other.Cookies cookies1 in cartJson.Cookies)
                //{
                    
                //        if (cookies1.GoodsNo == GoodsNo)// 這種寫法如果排在前面別上面優化,排在后面比上面劣勢,況且(2N+1)和(N+1)之間還是N+1比較省。
                //        {
                //            break;
                //        }
                //        cookiesArray[i] = cookies1;
                //        i++;
                //}

                //for (int j = i; j <cartJson.Cookies.Length;j++ ) 
                //{
                //    cookiesArray[j] = cartJson.Cookies[j+1];
                //}

 

#2樓 2012-03-19 22:20 vons      

代碼的變量和結構太亂了,是不是想在cookiesArray中保存所有不等於GoodsNo的項?

var list = new List<Common.Other.Cookies>();
for (int i=0; i <cartJson.Cookies.Length;i++ )
{
if (cartJson.Cookies[i].GoodsNo != GoodsNo)
list.Add(cartJson.Cookies[i]);
}
return list.ToArray();
 回復 引用 查看 刪除  

#3樓 2012-03-20 02:43 青磚綠樹      

你這代碼寫得夠繞的。。。
要是在我的團隊,這樣的情況出現3次,打包回家找媽
取出不等於GoodsNo的項
var list = cartJson.Cookies.ToList()
.Select(c=>c.GoodsNo != GoodsNo)
.ToList();
 回復 引用 查看 刪除  

#4樓 2012-03-20 02:44 青磚綠樹      

var list = cartJson.Cookies.ToList()
.Where(c=>c.GoodsNo != GoodsNo);
 回復 引用 查看 刪除  

#5樓 2012-03-20 04:48 B.Zhou      

LZ代碼的意思是,排除不等於GoodsNo的第一項
樓上幾位看的太不仔細了!

不過LZ的代碼寫的太不專業了,有邏輯錯誤,有發生異常的可能性
1.cookiesArray[i - 1] = cookies1;
應該改成:cookiesArray[i] = cookies1;這是邏輯錯誤
i-1:如果當i為0時就匹配成功isDel=true,index啟不是-1?有異常可能性

2.樓主以后不要把這樣的文章放首頁。
 回復 引用 查看 刪除  

#6樓[樓主] 2012-03-20 09:13 沐海      

@vons
謝啦。小弟實在太慚愧了。這段代碼留着給我這個井底之蛙。
查看 刪除  修改

#7樓[樓主] 2012-03-20 09:13 沐海      

@青磚綠樹
謝啦。小弟實在太慚愧了。這段代碼留着給我這個井底之蛙。
查看 刪除  修改

#8樓[樓主] 2012-03-20 09:15 沐海      

@B.Zhou
樓上幾位老大的意思是對的。是我的代碼寫的不好,讓你誤會了。

但是您指出的“index啟不是-1?有異常可能性”也是我的錯誤。
查看 刪除  修改

 

 

 

好好打基礎。認真學基礎。別再朝三暮四了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM