首页 新闻 会员 周边

在vs2005如何改写当前代码,代码如何

0
悬赏园豆:5 [已关闭问题]

          List<ChatInfo> ChatInfoArray = null;
            FindClass Fc = new FindClass();
            Fc.UserId = ID;
            ChatInfoArray = ListClass.Engin_ChatList.FindAll(Fc.PredicateChat);
            foreach (ChatInfo Cif in ChatInfoArray)
            {
                ListClass.Engin_ChatList.Remove(Cif);
            }
            return ChatInfoArray;

我改写的:

ArrayList ChatInfoArray = null ;
   FindClass Fc = new FindClass();
   Fc.UserId = ID;
   ChatInfoArray = ListClass.Engin_ChatList;
   foreach(ChatInfo Cif in ChatInfoArray)
   {
    if(!Fc.PredicateChat(Cif))
    {
     ListClass.Engin_ChatList.Remove(Cif);
    }
   }
   return ChatInfoArray ;

 

平凡网客的主页 平凡网客 | 初学一级 | 园豆:9
提问于:2010-06-21 17:16
< >
分享
其他回答(3)
0

不懂问的是什么意思 .

天堂口 | 园豆:514 (小虾三级) | 2010-06-21 17:17
0

表达问题清楚点,你想把泛型改成.NET1 版本?

Astar | 园豆:40805 (高人七级) | 2010-06-21 17:41
0

假如你的LIST的ITEM是唯一的话,第一段代码有些多余。

你改的第二段效率相对于第一段来说有提高效率了,省去了之前的 FindAll 。

还有你的第二段为什么要 ArrayList ChatInfoArray = null ; 而不直接 ArrayList ChatInfoArray = ListClass.Engin_ChatList; 呢

Kevan | 园豆:337 (菜鸟二级) | 2010-06-21 17:47
0

如果你要改变某个集合,就不可以用foreach语句。否则会抛出异常,告诉你集合发生改变。应该用for语句。

另外,linq是最方便的方式。

FindClass Fc = new FindClass();
Fc.UserId = ID;

return from chatInfor in ChatInfoArray where Fc.PredicateChat(Cif) select chatInfor;

肖敏 | 园豆:245 (菜鸟二级) | 2010-06-23 00:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册