[英]Why list show strange behaviour?
在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 ++指针)。 因此,当您将数据从一个列表复制到另一个列表时,您只是在复制引用。
您需要将项目从一个列表克隆到另一个列表。 给您的类一个克隆实例的方法,并使用该方法将项目从一个列表复制到另一个列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.