I'm writing a code in C#. Please see below codes.
    //-- 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;
        }
    }
Now the question is, why the original object **originalInfo** also changed that is supposedly not. It's annoying!
Additional: Is there a better/shortest way to compare to object (models) if have difference?
 
    