亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

作為參數傳遞的對象未更新

作為參數傳遞的對象未更新

C#
慕碼人8056858 2023-07-09 10:24:39
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)


查看完整回答
反對 回復 2023-07-09
  • 1 回答
  • 0 關注
  • 117 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號