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

向自定义列表添加自定义对象时触发System.NullReferenceException异常

解决ProductList.Data空引用异常问题

问题根源

你创建ProductList实例时,其Data属性并未初始化。C#中引用类型(比如List<T>)默认值为null,直接调用market.Data.Add(product)自然会触发NullReferenceException。

修复方案

有两种简单的方式初始化Data属性:

方式1:在ProductList构造函数中初始化

修改ProductList类,添加构造函数初始化Data:

public class ProductList
{
    public List<ProductData> Data { get; set; }

    public ProductList()
    {
        // 初始化List,避免null
        Data = new List<ProductData>();
    }
}

方式2:使用自动属性默认值(C# 6及以上版本支持)

直接在属性声明时赋值默认值,代码更简洁:

public class ProductList
{
    // 声明时直接初始化List
    public List<ProductData> Data { get; set; } = new List<ProductData>();
}

额外建议:避免手写JSON解析器

你当前的自定义解析器依赖字符串索引定位字段,存在很多隐患:

  • JSON字段顺序变化会导致解析失败
  • 字段值包含特殊字符(比如逗号、引号)时会出错
  • 嵌套结构、空格差异等情况都可能破坏解析逻辑

C#内置了成熟的JSON序列化库System.Text.Json(.NET Core 3.0+/.NET 5+),用它可以彻底替代手写解析,代码更简洁可靠。示例如下:

using System.Text.Json;

public static ProductList CustomJsonParser(string json)
{
    // 直接反序列化为ProductList对象,无需手动解析
    return JsonSerializer.Deserialize<ProductList>(json);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:25:11