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

For循环中SurveyDetail的questionId始终为循环终值的问题求助

问题解决:List中所有元素属性值一致的问题

问题根源是引用类型的特性:SurveyDetail是类(引用类型),你在循环外部只实例化了一个detail对象。每次循环只是修改这个对象的属性,然后将同一个对象的引用添加到List中。最终List里的所有元素都指向同一个实例,所以所有元素的questionId都是循环最后一次赋值的2。

修改后的代码

private List<SurveyDetail> GetSurveyDetails()
{
    List<SurveyDetail> surveyDetails = new List<SurveyDetail>();
    int cid = 0;
    for (int i = 1; i < 3; i++)
    {
        // 每次循环创建新的SurveyDetail实例
        SurveyDetail detail = new SurveyDetail();
        detail.choiceId = "1";
        detail.choiceDesc = "tesT";
        detail.questionId = i.ToString();
        surveyDetails.Add(detail);
    }
    return surveyDetails;
}

public class SurveyDetail
{
    public string questionId { get; set; }
    public string choiceId { get; set; }
    public string choiceDesc { get; set; }
}

说明

将new SurveyDetail()移到循环内部,这样每次迭代都会生成一个全新的SurveyDetail对象。修改每个独立对象的属性后再加入List,此时List中的每个元素都是互不关联的实例,它们的questionId会分别是1和2,满足你的需求。

内容的提问来源于stack exchange,提问作者Fhd.ashraf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:16:01