首页 > 解决方案 > 在 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);
                    }
                }

有没有其他方法可以达到同样的效果?

标签: c#listclasscollections

解决方案


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


推荐阅读