井底之蛙
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?有異常可能性”也是我的錯誤。 查看 刪除 修改
好好打基礎。認真學基礎。別再朝三暮四了。
