两个具有参考的不同对象的奇怪问题

当将 ClaimDetail 添加到 tmpClaim 时,此 ClaimDetail 也会添加到声明中。有人可以解释一下为什么会这样吗?


List<Claim> claims; // list data

foreach ( Claim claim in claims) {

  Claim tmpClaim = datacontext.Claims.FirstOrDefault ( c => c.Id == claim.Id );


  ClaimDetail claimDetail = new ClaimDetail ( );

  claimDetail.ClaimDetailType = "Type";


  // add claim

  datacontext.Claims.InsertOnSubmit ( tmpClaim );

  datacontext.SubmitChanges ( );

}


三国纷争
浏览 98回答 1
1回答

月关宝盒

tmpClaim不是一个新对象。它仍然是对claims.这本质上意味着无论你做什么tmpClaim也发生在claims.&nbsp;他们是一样的东西。如果您不希望更改tmpClaim影响claims,则需要创建一个new Claim(以及任何必要的复制/克隆)并在该新对象上完成所有工作。
打开App,查看更多内容
随时随地看视频慕课网APP