为什么名单表现出奇怪的行为
本文关键字:名单 为什么 | 更新日期: 2023-09-27 18:14:13
Vs2010 EF, c#。
有两个列表(oLisTranItem,oListTaxItem),需要在另一个列表中复制一个列表属性值,然后我需要在新列表上工作。问题是在将内容元素一个列表复制到另一个列表后,任何类型的更改都会对两个列表产生影响,为什么会发生这种情况,我只是在列表上更改,但两个列表都发生了更改请检查我下面的语法
List<TransactionItem> oLisTranItem = new List<TransactionItem>();
List<TransactionItem> oListTaxItem = new List<TransactionItem>();
oLisTranItem = _TransactionItem;
oListTaxItem = _TransactionItemTax;
TransactionItem tmpItem = new TransactionItem();
tmpItem = oLisTranItem.Where(item => item.QuotationDetailID == quotationDetailID && item.Action != Entity.ActionMode.Delete && item.IsDeleted == false).FirstOrDefault();
if (tmpItem.IsNotNull())
{
tmpItem.Action = Entity.ActionMode.Add;
oListTaxItem.Add(tmpItem);
}
else
{
_TransactionItemTax = new List<TransactionItem>();
}
int nCounter = 5;
foreach (TransactionItem item in oListTaxItem)
{
if (item.QuotationTaxID ==0)
{
nCounter = nCounter + 1;
item.QuotationTaxID = nCounter;
}
}
请帮我找出为什么会出现这个问题,如何解决这个问题。
如有任何疑问请询问,谢谢。
TransactionItem可能是一个类,对吧?而不是结构体
默认情况下,每个类类型都是引用类型。这意味着列表中包含的不是事务项的实际值,而是对这些值的引用(想想c++指针)。所以当你把数据从一个列表复制到另一个列表时,你只是复制了引用。
您需要将项目从一个列表克隆到另一个列表。给你的类一个克隆实例的方法,并使用该方法将项目从一个列表复制到另一个列表。