Presenter 这里我调用了一个名为“services.UpdateSelectedDeposit(deposit);”的方法。正如您所看到的,它调用了以下服务中的一个方法,该方法调用存储库中的一个方法来根据 DepositID 设置存款模型。public void OnDoubleClicked(object sender, EventArgs e){ if(addTipView.DataGridView.CurrentRow.Index != -1) { deposit.DepositID = Convert.ToInt32(addTipView.DataGridView.CurrentRow.Cells["DepositID"].Value); Console.WriteLine(deposit.DepositID); services.UpdateSelectedDeposit(deposit); Console.WriteLine(deposit.DepositAmount); addTipView.TxtTipAmount = deposit.DepositAmount.ToString(); addTipView.TxtDate = deposit.DepoistDate.ToString(); addTipView.TxtHoursWorked = deposit.HoursWorked.ToString(); }}服务public void UpdateSelectedDeposit(Deposit deposit){ repo.GetSelectedDeposit(deposit);}存储库public void GetSelectedDeposit(Deposit deposit){ using (var context = new TipManagerDBEntities()) { deposit = context.Deposits.Where(x => x.DepositID == deposit.DepositID).FirstOrDefault(); Console.WriteLine(deposit.DepositAmount); }}当我在存储库中打印存款金额时,我得到正确的值,但当我在演示器中打印存款金额时,它不正确。我作为参数传递的存款类别是通过引用传递的,对吗?为什么我的值在演示者中不正确。
1 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
当将对象传递给方法(宽松使用的术语)时,您实际上是在传递引用,但是这里重要的一点是对该对象的实际引用是按值传递的。这意味着更新它(覆盖它)不会在调用链的更高层执行任何操作。
如果您想覆盖该引用(通过引用传递引用),那么您将需要使用关键字(在适当的情况下)。ref
public void GetSelectedDeposit(ref Deposit deposit)
- 1 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消