代码改变世界

(井底之蛙)惭愧丢人的两段代码---希望以后多多长进,警醒自己

  沐海  阅读(2341)  评论(10编辑  收藏  举报

井底之蛙

 

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();


//各位各位。实在是一点点泡沫把我吹的不知道自己是谁了。惭愧啊惭愧啊。

最惭愧的。虽然立即就把代码改成上面那样,但是直到今天,我才从心里真正明白自己那一点点经验就自大的心态。

感谢各位的点醒。这篇错误代码要永远留着。

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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?有异常可能性”也是我的错误。
查看 删除  修改

 

 

 

好好打基础。认真学基础。别再朝三暮四了。

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
记录生活、工作、学习点滴!
E-Mail:mahaisong@hotmail.com 欢迎大家讨论。
沐海博客园,我有一颗,卓越的心!
点击右上角即可分享
微信分享提示