我用对象(事件)填充列表。
该对象有一个称为DocumentDate的字段,这是我希望在每个项目中更新的字段。
但是循环之后,列表中的所有项目都是相同的!我想知道为什么:
代码:
private List<Events> CreateEventsBetween(string start, string end, string repeatState, Event defaultEvent)
{
var states = Resources.GetStringArray(Resource.Array.repeat_states);
DateTime.TryParse(start, out DateTime dtStart);
DateTime.TryParse(end, out DateTime dtEnd);
List<Event> events = new List<Event>();
if (repeatState == states[0])
while(dtStart<= dtEnd)
{
var e = defaultEvent;
e.DocumentDate = dtStart;
events.Add(e);
dtStart= dtStart.AddDays(i);
}
...
...
...
return events;
}
这里事件列表中的每个项目都应具有相同的DocumentDate,但它们应具有不同的日期
答案 0 :(得分:2)
因为所有事件都是相同的引用。您将其分配到var e = defaultEvent;
。
相反,您需要使用new
进行初始化:
var e = new Event{ DocumentDate = dtStart }; // other properties as well