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

C#构建字典CRUD API触发System.ArgumentNullException空值报错如何解决?

报错根因说明

你遇到的System.ArgumentNullException异常本质是向C#字典中插入数据时,传入了空键(drink.Vendor为null)或空有效值(drink.Ingredients为null),也可能是整个drink参数为空导致成员访问时报错。

修复方案

1. 修正控制器参数绑定配置

ASP.NET Core接收POST请求的JSON参数时,需要给接口方法的参数添加[FromBody]特性,否则系统不会将请求体的JSON内容绑定到参数,会直接导致drink参数为null。
示例控制器代码参考:

[HttpPost]
public IActionResult AddVendor([FromBody] Drink drink)
{
    // 你的业务逻辑
    _yourService.create(drink);
    return Ok();
}

同时确认Postman请求头已添加Content-Type: application/json,请求体的JSON键名和Drink模型属性名匹配(默认支持驼峰命名匹配,即模型的Vendor属性对应请求的vendor字段)。

2. 给模型添加默认初始化值

C#引用类型的属性默认值为null,你可以直接在模型定义中给属性赋初始值避免空值:

namespace WebApplication2
{
    public class Drink
    {
        public List<string> Ingredients { get; set; } = new List<string>();
        public string Vendor { get; set; } = string.Empty;
    }
}

3. 业务逻辑增加空值校验与防重复处理

C#字典不允许Key为null,也不允许重复插入同一个Key,你需要在插入前做校验:

public void Create(Drink drink)
{
    // 校验Vendor必填
    if (string.IsNullOrWhiteSpace(drink.Vendor))
    {
        throw new ArgumentException("Vendor字段不能为空");
    }
    // 兜底处理Ingredients空值
    drink.Ingredients ??= new List<string>();
    // 处理重复Key的场景,可根据需求选择更新或抛出业务异常
    if (VENDORS.ContainsKey(drink.Vendor))
    {
        VENDORS[drink.Vendor] = drink.Ingredients;
        return;
    }
    VENDORS.Add(drink.Vendor, drink.Ingredients);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:27:03