You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#自定义ISerializable泛型集合反序列化后第二个foreach无输出

问题根因

反序列化构造函数存在逻辑错误:你已正确从序列化信息中读取到排序后的数组,但初始化内部存储列表lista时,错误传入了还未赋值的空lista对象,导致反序列化后lista始终为空,因此第二个foreach没有输出。

修复方案

只需修改Kolekcja类的反序列化构造函数,创建列表时传入读取到的数组即可:

public Kolekcja(SerializationInfo sinfo, StreamingContext ctx)
{
    T[] tablica = (T[])sinfo.GetValue("tablica", typeof(T[]));
    // 修正:用读取到的tablica初始化lista
    lista = new List<T>(tablica);
}

补充说明

你代码中带List<T>参数的构造函数目前是空实现,如果后续要用到的话也需要补全内部lista的赋值逻辑,否则也会出现空列表问题:

public Kolekcja(List<T> lista)
{
    this.lista = lista ?? new List<T>();
}

运行效果

修复后执行代码:

  • 第一个foreach输出原始顺序的1、3、2
  • 第二个foreach输出序列化时排序后的1、2、3,完全符合预期逻辑。

内容的提问来源于stack exchange,提问作者Mezus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:45:05