私のアプリケーションでは、請求書のアイテムを編集しようとしています。複雑化のために、私は多くのテーブルから元のアイテムを削除し、更新されたアイテムを再挿入することにしました。同一のオブジェクトを編集すると他のオブジェクトが変更されます
私のコードでは、元の請求書と更新された請求書という2つのオブジェクトがあります。どちらも同じViewStateオブジェクトにあるため、両方とも同じです。更新された請求書オブジェクトを編集すると、元の請求書オブジェクトも更新されたことがわかりました。
invoiceオブジェクトとアイテムオブジェクトはどちらもシリアル化可能であるため、ViewStateで使用することができます。
私のビジュアルスタジオは動作していますか、これには論理がありますか?
EDIT
BankCheque originalCheque = (BankCheque)ViewState["OriginalCheque"];
BankCheque cheque = (BankCheque)ViewState["OriginalCheque"];
cheque.chequeCode = tb_chequeCode.Text;
cheque.client = new Client();
cheque.client.clientID = hidden_clientId.Value;
cheque.chequeIssueDate = DateTime.Parse(tb_issueDate.Text);
cheque.chequePaymentDate = DateTime.Parse(tb_paymentDate.Text);
cheque.chequeAmount = float.Parse(tb_chequeValue.Text);
if (cb_chequePaid.Checked)
{
cheque.paid = 1;
}
else
{
cheque.paid = 0;
}
cheque.invoices = getNewInvoicesList();
cheque = addPaymentsToCheque(cheque);
getNewInvoicesList方法が
private List<ClientInvoice> getNewInvoicesList()
{
DataTable dt = (DataTable)ViewState["invoicesDt"];
List<ClientInvoice> invoices = new List<ClientInvoice>();
ClientInvoice invoice;
foreach (DataRow row in dt.Rows)
{
invoice = new ClientInvoice();
invoice.invoiceID = Convert.ToInt32(row[0].ToString());
invoices.Add(invoice);
}
return invoices;
}
Visual Studioは、アプリケーションの実行時の動作とは関係ありません。また、コードを見ることなくこれに答える方法はありません。 – Filburt
参照型変数に問題がありますか? https://stackoverflow.com/questions/5057267/what-is-the-difference-between-a-reference-type-and-value-type-in-c – VDWWD
私はコードを追加した後、getNewInovicesListメソッドを呼び出した後、オリジナルのチェックも変更されています –