Aru*_*tap 1 c# collections class list
首先,我将我的课程添加到列表<>中:
然后将该类复制到新类并根据逻辑再次保存在列表<>中更改日期后,但已保存在列表中的第一个元素的日期也正在更改。
看下图:
这是我的完整代码:
if (Session["CompanyId"] != null)
{
List<CalendarList> CalendartableList = new List<CalendarList>();
DateTime cldate = Convert.ToDateTime(CalendarList.DateDue);
CalendarList.CompanyId = Convert.ToInt32(Session["CompanyId"]);
CalendarList.Category = 15;
CalendarList.Status = 1;
CalendarList.Identifier = 232;
CalendarList.Quarter = 5;
CalendarList.IsCompleted = false;
CalendarList.CalendarGUID = CalendarList.Description;
CalendartableList.Add(CalendarList);
DateTime po_Date = cldate;
int pi_Count = 0;
while (po_Date.Year == DateTime.Now.Year)
{
pi_Count += 1;
switch (CalendarList.Interval)
{
case "Weekly":
{
po_Date = cldate.AddDays(7 * pi_Count);
break;
}
case "Biweekly":
{
po_Date = cldate.AddDays(14 * pi_Count);
break;
}
case "Monthly":
{
po_Date = cldate.AddMonths(1 * pi_Count);
break;
}
default:
{
po_Date = cldate.AddMonths(3 * pi_Count);
break;
}
}
if (po_Date.Year == DateTime.Now.Year)
{
CalendarList newlist = new CalendarList();
newlist = CalendarList;
newlist.DateDue = po_Date.ToString();
CalendartableList.Add(newlist);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以实现相同的目标?
你需要记住的是,要添加reference到您的object,而不是该对象的副本,到列表中。最简单的解决.Clone()方法是向您添加一个方法,object以获取其自身的副本并将其创建为新的object. 克隆副本可以独立于原始副本进行修改。