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
相关产品推荐
相关产品推荐

