C# 如何将对象数据从一个方法传递到另一个方法

C# 如何将对象数据从一个方法传递到另一个方法,c#,C#,我有一个程序,在这个程序中,用户将信息输入到两个单独的文本框中,然后单击一个按钮,此时程序会执行一些操作,并将数据返回到第三个文本框 然后,用户将数据输入另一个文本框并单击第二个按钮。程序从第一个按钮单击方法获取文本框返回数据以及新的输入数据,执行一些工作并将数据返回到多行文本框 我遇到的问题是,一旦程序离开第一个按钮单击方法,返回的数据就会消失,因此第一个按钮单击方法中的数据不会传递给第二个按钮单击方法 我很确定它会这样做,因为对象是在第一个按钮单击方法内部实例化的,而不是在类级别实例化的,因

我有一个程序,在这个程序中,用户将信息输入到两个单独的文本框中,然后单击一个按钮,此时程序会执行一些操作,并将数据返回到第三个文本框

然后,用户将数据输入另一个文本框并单击第二个按钮。程序从第一个按钮单击方法获取文本框返回数据以及新的输入数据,执行一些工作并将数据返回到多行文本框

我遇到的问题是,一旦程序离开第一个按钮单击方法,返回的数据就会消失,因此第一个按钮单击方法中的数据不会传递给第二个按钮单击方法

我很确定它会这样做,因为对象是在第一个按钮单击方法内部实例化的,而不是在类级别实例化的,因此一旦程序离开该方法,对象就消失了。我试图在类级别实例化该对象,但无法实例化,因为我收到“字段初始值设定项无法引用非静态字段、方法或属性”错误

我已经看过了这个问题的MSDN规范,并理解了它的原因,但是他们给出的解决方法是实例化方法中的对象。所以我又回到了我的起点

我不知道在这里该做什么。下面是我在button click方法中实例化对象的代码:

private void btnOrderButton_Click(object sender, EventArgs e)
    {              
        numberOfPizzas = int.Parse(this.txtNumberOfPizzaOrdered.Text);
        numberOfCokes = int.Parse(this.txtNumberOfCokesOrdered.Text);
        PizzaOrder orderObject = new PizzaOrder(numberOfPizzas, numberOfCokes);

        this.txtAmountDue.Text = orderObject.TotalAmountDue.ToString("C");                                  
    }

    private void btnPaymentButton_Click(object sender, EventArgs e)
    {
        amountDue = double.Parse(this.txtAmountDue.Text);
        amountPaid = double.Parse(this.txtAmountPaid.Text);

        Payment orderPaymentObject = new Payment(amountDue, amountPaid);
    }

数据将消失,因为您正在方法范围内创建临时对象,这意味着它不存在于方法之外

要修复在类级别声明数据成员并像这样使用它的问题,请执行以下操作:

Payment m_orderPaymentObject = null;
private void btnPaymentButton_Click(object sender, EventArgs e)
{
    amountDue = double.Parse(this.txtAmountDue.Text);
    amountPaid = double.Parse(this.txtAmountPaid.Text);

    m_orderPaymentObject = new Payment(amountDue, amountPaid);
}

对所需的任何其他数据对象重复此过程

这是一种方法

class ClassName
{
    // available anywhere within the class; remember to instantiate before referencing
    private PizzaOrder _order;
    private Payment _payment;

    private void btnOrderButton_Click(object sender, EventArgs e)
    {              
        numberOfPizzas = int.Parse(this.txtNumberOfPizzaOrdered.Text);
        numberOfCokes = int.Parse(this.txtNumberOfCokesOrdered.Text);
        _order = new PizzaOrder(numberOfPizzas, numberOfCokes);

        this.txtAmountDue.Text = _order.TotalAmountDue.ToString("C");                                  
    }

    private void btnPaymentButton_Click(object sender, EventArgs e)
    {
        amountDue = double.Parse(this.txtAmountDue.Text);
        amountPaid = double.Parse(this.txtAmountPaid.Text);

        _payment = new Payment(amountDue, amountPaid);
    }
}

啊,我明白了。我知道你可以用变量,但不知道你可以用对象。酷!非常感谢你!当然,没问题。一步一个脚印……)