0

我有一个myClass对象列表(之前添加了一些元素)

List<myClass> myClassList1;

然后我将这个列表中的一些元素复制到另一个列表中

List<myClass> myClassList2 = new List<myClass>();
foreach (myClass obj in myClassList1)
{
  myClassList2.Add(obj);
}

此列表现已排序

myClassList2.sort();

然后我想修改这个排序列表中的第一个元素

myClassList2[0].id++;

问题:在myClassList2this 元素中被修改,但在myClassList1.

我认为将myClass对象添加到列表会添加对该对象的引用,因此我可以在列表中修改它(这是实际计划)。

4

1 回答 1

0

它确实按您的预期更新了 myClassList1。您可能想发布您的代码。这是我更新两个列表的代码。

    public class myClass
    {
        int _id;
        public myClass(int id)
        {
            Id = id;
        }
        public int Id
        {
            get
            {
                return _id;
            }
            set
            {
                _id = value;
            }
        }
    }

    public void BuildList()
    {
        List<myClass> myClassList1 = new List<myClass>();
        myClassList1.Add(new myClass(8));
        myClassList1.Add(new myClass(4));
        myClassList1.Add(new myClass(10));
        myClassList1.Add(new myClass(1));   // This would become the first item when the list is sorted.
        myClassList1.Add(new myClass(30));

        List<myClass> myClassList2 = new List<myClass>();
        foreach (myClass obj in myClassList1)
        {
            myClassList2.Add(obj);
        }

        myClassList2.Sort((s1, s2) => s1.Id.CompareTo(s2.Id));  // Sort by Id.

        // Modify the first element in the second sorted list.
        myClass firstElementList2 = myClassList2[0];
        firstElementList2.Id++;
        int valueInList2 = firstElementList2.Id; // Get the id that is incremented

        // Find the same object in first list...
        myClass sameElementInList1 = myClassList1.Find(x => x.Id.Equals(valueInList2));
        int valueInList1 = sameElementInList1.Id;

        if (valueInList2== valueInList1)
        {
            MessageBox.Show("Cheers!");
        }
    }

去测试:

[TestMethod]
        public void SKTestMethod()
        {
            Class1 c1 = new Class1();
            c1.BuildList();
        }
于 2014-01-01T00:00:42.383 回答