日期:2014-05-18  浏览次数:20944 次

赋值赋出的怪异结果
这是这两个变量唯一有关联得地方
C# code

  List<TB_CoolegeDepatPost_Person> DepatPosList = new List<TB_CoolegeDepatPost_Person>();
            BingListByDepatPosti(out DepatPosList);
            CacheDepatPosiList = DepatPosList; //CacheDepatPosiList是一个自定义的属性
            DepatPosiList = DepatPosList;  //DepatPosiList是一个全局变量


然后我在一个方法中对其中一个变量进行了赋值
C# code


                               int a = CacheDepatPosiList.Count;
                                DepatPosiList.Remove(Items);//
                                int b =CacheDepatPosiList.Count;


一切都是那么正常。。。但是当我执行的时候却诡异的发现当我执行 DepatPosiList.Remove(Items);这句代码的时候CacheDepatPosiList的值也会被删掉一个。。。于是就出现了
a是3
b是2
小弟百思不得其解啊。。。这到底是为啥呢?
虽然以前VS给我报过1==1是错误的这种高智商问题。。但是这回小弟断点,和F11都用烂了。。依然不晓得为啥。。
跪求技术帝。。跪求牛人。。跪求高人。。跪求一切能解释此现象的高人。。。。。

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