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

未赋值局部变量delivered报错及获取存储过程返回值的方案咨询

解决"Using a local variable 'delivered' that is not assigned a value"错误

问题原因

编译器抛出该错误的核心原因是:它无法保证delivered变量一定会被赋值。你仅在第二个foreach (var items in count)循环内给delivered赋值,但如果count集合为空,这个循环根本不会执行,delivered会始终处于未初始化状态,后续给cmd2传参时自然触发错误。

解决方案

1. 给delivered设置初始默认值

声明变量时直接赋予符合业务逻辑的默认值,确保无论count是否为空,变量都有合法值:

// 示例:默认设为当天,也可根据业务需求设为默认配送天数
DateTime delivered = today;
// 或者:DateTime delivered = today.AddDays(6);

2. 修复foreach循环的参数重复问题(额外优化)

你的第二个foreach循环中,每次都会给cmd1添加新的@ProductArticleNumber参数,多次循环后会导致参数重复,引发存储过程调用异常。需在每次循环前清空参数:

foreach (var items in count)
{
    cmd1.Parameters.Clear(); // 清空之前的参数集合
    cmd1.Parameters.AddWithValue("@ProductArticleNumber", items.ProductArticleNumber);
    int countArticles = (int)cmd1.ExecuteScalar();
    if (countArticles > 3)
    {
        delivered = today.AddDays(3);
    }
    else
    {
        delivered = today.AddDays(6);
    }
}

补充说明

如果业务逻辑要求count不能为空才能执行后续操作,可以在执行foreach前先判断count.Any(),但即使添加了该判断,给变量设置初始值依然是更稳妥的做法,能彻底规避编译器的静态检查报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:26:04