gpt4 book ai didi

c# - List().添加问题C#

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:14 24 4
gpt4 key购买 nike

当我循环进入列表时,我总是看到列表中所有项目的相同值。

我哪里错了?

这就是我所做的。

var DyObjectsList = new List<dynamic>; 
dynamic DyObj = new ExpandoObject();
if (condition1)
{ DyObj.Required = true;
DyObj.Message = "Message 1";
DyObjectsList.Add(DyObj); }
if (condition2)
{ DyObj.Required = false;
DyObj.Message = "Message 2";
DyObjectsList.Add(DyObj);
}

……

有趣的是,DyObjectsList 中的所有项目都被最后分配的对象的值替换。

最佳答案

您需要在 if 语句的主体内实例化一个新实例(否则您将重复修改/添加对同一实例的引用):

if (condition1) { 
dynamic DyObj = new ExpandoObject();
DyObj.Required = true;
DyObj.Message = "Message 1";
DyObjectsList.Add(DyObj); }
if (condition2) {
dynamic DyObj = new ExpandoObject();
DyObj.Required = false;
DyObj.Message = "Message 2";
DyObjectsList.Add(DyObj);
}

当然,更好的是:

if(condition1) {
dynamic obj = GetNewDynamicObject(false, "Message 1");
DyObjectsList.Add(obj);
}
if(condition2) {
dynamic obj = GetNewDynamicObject(true, "Message 2");
DyObjectsList.Add(obj);
}

GetNewDynamicObject 的定义很明显。

关于c# - List<dynamic>().添加问题C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6601309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com