【发布时间】:2014-09-01 06:33:50
【问题描述】:
我正在用 C# 编写代码。请看下面的代码。
//-- Constructor
public frmInvoice(EditInvoice editInvoice)
{
InitializeComponent();
originalInfo = new EditInvoice();
editedInfo = new EditInvoice();
originalInfo = editInvoice;
editedInfo = editInvoice;
payment = new Payment();
}
//-- Process
private void btnOk_Click(object sender, EventArgs e)
{
editedInfo.AppliedAmount = Convert.ToDouble(txtAppliedAmount.Text);
editedInfo.PaymentCode = cboPaymentCode.SelectedValue.ToString();
editedInfo.Remarks = txtRemarks.Text;
if (originalInfo.AppliedAmount != editedInfo.AppliedAmount ||
originalInfo.PaymentCode != editedInfo.PaymentCode ||
originalInfo.Remarks != editedInfo.Remarks)
{
editedInfo.IsEdited = true;
}
}
现在的问题是,为什么原来的对象**originalInfo** 也发生了变化,这应该是没有的。好烦!
附加:如果有差异,是否有更好/最短的方法来与对象(模型)进行比较?
【问题讨论】:
-
editInvoice是引用类型吗? -
不,它不是引用类型
-
大概是……不是上课吗?
-
您在构造函数中同时指定
originalInfo和editInfo来引用同一个对象。显然,“改变其中一个”似乎会改变两者,因为它们都指的是同一个单一的对象。 -
@Lasse 但我将它分配给不同的变量。那么我怎样才能成功地做到这一点呢?