0

我有以下代码从arraylist反序列化一个元素,我不确定DeserializeObject方法在反序列化时是否也会从arraylist中删除该元素?每次序列化后是否需要添加 recvJsonBuffer.RemoveAt(0) ?

                    List<Json> entities = (List<Json>)JavaScriptConvert.DeserializeObject(recvJsonBuffer[0].ToString(), typeof(List<Json>));

                    foreach (Json obj in entities)
                    {
                        trace_idBuffer = obj.traceid;
                        plain_tagidBuffer = obj.Plain_tagID;
                        national_codeBuffer = obj.National_Code;
                        country_codeBuffer = obj.Country_Code;
                        res_codeBuffer = obj.Res_Code;
                        exp_codeBuffer = obj.Exp_Code;
                        reader_idBuffer = obj.Device;
                        data_sourceBuffer = obj.Datasource;
                        //  recvJsonBuffer.RemoveAt(0);
                    }
4

1 回答 1

0

它不应该,如果DeserializeObject我会......对设计师非常生气。

迭代一个可枚举应该就是这样而不是操纵它。

像在代码中一样删除元素RemoveAt也是一个坏主意。

它从您正在处理的列表/数组中删除一个项目,类似于从您坐的树上切割树枝......

为什么要删除它?如果您不再使用它,请让 GC 摆脱它。移除它不会加速这个过程,但会让一切都敞开,让你在脚下射击(如果你在falling_off_the_branch-thing中幸存下来)

于 2013-01-28T03:25:13.720 回答