在 list<> 中添加一个类并再次复制该类并再次添加一些修改

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)

有没有其他方法可以实现相同的目标?

Ste*_*odd 5

你需要记住的是,要添加reference到您的object,而不是该对象的副本,到列表中。最简单的解决.Clone()方法是向您添加一个方法,object以获取其自身的副本并将其创建为新的object. 克隆副本可以独立于原始副本进行修改。