当我循环进入List时,我总是看到列表中所有项目的值相同.
我哪里错了?
这就是我所做的.
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);
}
Run Code Online (Sandbox Code Playgroud)
......
有趣的是,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);
}
Run Code Online (Sandbox Code Playgroud)
当然,更好的是:
if(condition1) {
dynamic obj = GetNewDynamicObject(false, "Message 1");
DyObjectsList.Add(obj);
}
if(condition2) {
dynamic obj = GetNewDynamicObject(true, "Message 2");
DyObjectsList.Add(obj);
}
Run Code Online (Sandbox Code Playgroud)
其定义GetNewDynamicObject很明显.
| 归档时间: |
|
| 查看次数: |
3904 次 |
| 最近记录: |