这是这两个变量唯一有关联得地方  List<TB_CoolegeDepatPost_Person> DepatPosList = new List<TB_CoolegeDepatPost_Person>();
            BingListByDepatPosti(out DepatPosList);
            CacheDepatPosiList = DepatPosList; //CacheDepatPosiList是一个自定义的属性
            DepatPosiList = DepatPosList;  //DepatPosiList是一个全局变量然后我在一个方法中对其中一个变量进行了赋值
                               int a = CacheDepatPosiList.Count;
                                DepatPosiList.Remove(Items);//
                                int b =CacheDepatPosiList.Count;一切都是那么正常但是当我执行的时候却诡异的发现当我执行 DepatPosiList.Remove(Items);这句代码的时候CacheDepatPosiList的值也会被删掉一个于是就出现了
a是3
b是2
小弟百思不得其解啊这到底是为啥呢?
虽然以前VS给我报过1==1是错误的这种高智商问题。。但是这回小弟断点,和F11都用烂了。。依然不晓得为啥。。
跪求技术帝。。跪求牛人。。跪求高人。。跪求一切能解释此现象的高人。。

解决方案 »

  1.   

    List拷贝不能 list1 = list2;
    要 list1 = list2.ToList();
    或者
    list1 = new List<T>();
    foreach (var item in list2)
    {
        list1.Add(item);
    }
      

  2.   

    引用对象赋值,只是对象的引用
    CacheDepatPosiList = DepatPosList; 
    DepatPosiList = DepatPosList;
    赋值之后,CacheDepatPosiList 、DepatPosiList 、DepatPosList指向的都是同一个对象