读书人

赋值赋出的怪异结果解决思路

发布时间: 2012-03-27 13:44:24 作者: rapoo

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

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

读书人网 >C#

热点推荐