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

C#创建自定义类对象列表后遍历无输出问题排查求助

问题根因

你代码中List<TermItem>的元素添加逻辑位置错误,导致没有任何对象被成功存入列表,遍历输出自然为空。
具体看参数确认部分的代码结构:

while (confirmation != 'y' && confirmation != 'Y')
{
    // 采集参数、询问是否确认
    if (confirmation == 'y' || confirmation == 'Y')
    {
        break; // 确认正确直接跳出循环,不会执行后面的Add逻辑
    }
    // 处理参数错误要重填的逻辑
    // 只有参数填错的时候才会走到这里的Add逻辑,完全不符合预期
    myItems.Add(new TermItem{...});
}

当用户确认参数正确时,直接执行break跳出了当前循环,myItems.Add()代码永远不会被触发,列表自始至终都是空的,所以foreach遍历没有任何输出。

修复方法

把myItems.Add()代码块移动到break之前,也就是用户确认参数正确后,先把对象存入列表再跳出循环:

if (confirmation == 'y' || confirmation == 'Y')
{
    // 新增:确认参数正确后先添加对象到列表
    myItems.Add(new TermItem
    {
        Id = i + 1,
        Area = area,
        Weight = mass*gravity,
        Planet = planet,
        TerminalV = (Math.Sqrt(2 * mass * gravity) / (Cd * P * area)),
        TimeToV = (Math.Sqrt(2 * mass * gravity) / (Cd * P * area) + area * dt) * (1 - Cd * dt)
    });
    break;
}
// 原来放在循环末尾的Add代码块直接删掉即可

额外优化建议

你代码中所有类似"Please enter the mass of the " + i+1 + "th object"的字符串拼接存在运算符优先级问题,+是左结合运算符,会先拼接字符串和i,再拼接1,比如i=3时会输出错误的31th,改成"Please enter the mass of the " + (i+1) + "th object"即可正常显示序号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:57:00