c# - 在 list<> 中添加一个类并再次复制该类并再次添加并进行一些修改

标签 c# list class collections

首先,我在列表<>中添加我的类:

enter image description here

然后将该类复制到新类,并在按照逻辑再次保存到列表<>中更改日期后,但是已经保存在列表中的第一个元素的日期也被更改。

请看下图:

enter image description here

这是我的完整代码:

           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);
                    }
                }

还有其他方法可以实现吗?

最佳答案

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

关于c# - 在 list<> 中添加一个类并再次复制该类并再次添加并进行一些修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57204169/

相关文章:

c# - 比较两个列表 - 如果一个列表中的任何对象属性已更改或列表中添加了新对象,则返回该对象

c++ - 无法创建抽象类的实例

c++ - 在模板类中初始化静态 std::map 成员?

c# - Telegram bot - 向/启动命令添加唯一键

string - 如何比较两个列表并找出它们之间的差异?

c# - DataBinding 到单例属性的属性

python - 将列表与元组与列表进行比较并返回唯一的元组

c# - 从另一个线程和类更新 WinForm 控件

c# - 标记通过网站发送的诈骗电子邮件的算法

c# - SqlMembershipProvider 管理