我有以下代码:如何改变一个列表影响完全不同的列表?
jobsToShiftUp.AddRange(PresentationManager.Instance.ScheduleViewSource.Where(o => o.Resources.First().ResourceName == criticalJob.Resources.First().ResourceName && ((o.Start >= criticalJob.Start) || (o.Start < criticalJob.Start && o.End > criticalJob.Start)) && !o.JobGuid.Equals(((Job)state.DraggedAppointments.First()).JobGuid) && GetWeekNumber(o.Start) == GetWeekNumber(criticalJob.Start)));
jobsToShiftUp = jobsToShiftUp.OrderBy(o => o.Start).ToList();
TimeSpan timeToShift = criticalJob.End - jobsToShiftUp.First().Start;
foreach (Job job in jobsToShiftUp)
{
if (jobsToShiftUp.IndexOf(job) == 0)
{
((ObservableCollection<Job>)state.DestinationAppointmentsSource).Single(o => o.JobGuid.Equals(job.JobGuid)).Start += timeToShift;
((ObservableCollection<Job>)state.DestinationAppointmentsSource).Single(o => o.JobGuid.Equals(job.JobGuid)).End += timeToShift;
......
最后两行(增加作业的开始和结束属性)会同时影响state.destinationappointmentssource列表和jobsToShiftUp列表(即它影响当前在foreach循环中引用的作业对象)。我想不出为什么它会影响jobsToShiftUp列表!