オーバーライドされたToString()
メソッドを使用して、書式設定されたデータを出力します。このデータは11種類の項目で構成されています。私は1つのアイテムだけを表示して、正しく表示することができますが、1つのアイテムは0として表示されます。どういうわけか、ToString()
メソッドに達していません。私はプログラムをデバッグし、行ごとにデータを追跡したところ、それはToString()
メソッドに行く前の時点で消えてしまい、理由は分かりません。ここに私のコードです。私は、データを渡すことに関係していると思うコードを投稿しているだけです。私が間違っていて、すべてのコードが必要な場合は、教えてください。データがオーバーライドToString()メソッドに到達しません
private void btnPaymentButton_Click(object sender, EventArgs e)
{
amountPaid = double.Parse(this.txtAmountPaid.Text);
orderPaymentObject = new Payment(orderObject.TotalAmountDue, amountPaid);
this.txtNumberOfPizzaOrdered.Clear();
this.txtNumberOfCokesOrdered.Clear();
this.txtAmountDue.Clear();
this.txtAmountPaid.Clear();
this.lblYourOrder.Visible = true;
this.rtxtYourOrder.Visible = true;
this.rtxtYourOrder.Text = orderObject.ToString();
}
.......
public class Payment
{
PizzaOrder orderObject;
double amountPaid = 0.0,
totalAmountDue = 0.0;
public Payment()
{
}
public Payment(double amountDue, double payment)
{
orderObject = new PizzaOrder();
amountPaid = payment;
totalAmountDue = amountDue;
orderObject.GetChangeDue(totalAmountDue, amountPaid);
//orderObject.ToString();
}
public Payment(double payment)
{
amountPaid = payment;
}
public double AmountPaid
{
get
{
return this.amountPaid;
}
}
}
......
public override string ToString()
{
Payment paymentOrder = new Payment();
return string.Format(" {0} Pizzas @ {1:C}: {2,8:C}\n" +
" {3} Cokes @ {4:C}: {5,8:C}\n" +
" Order Amount: {6,8:C}\n" +
" Sales Tax: {7,9:C}\n" +
" Amount Due: {8,8:C}\n" +
" Amount Paid: {9,9:C}\n\n" +
" Change Due: {10,9:C}", NumberOfPizzas,
PIZZA_PRICE, totalCostOfPizza, NumberOfCokes, COKE_PRICE,
totalCostOfCoke, FoodAndDrinkTotal, TotalSalesTax,
TotalAmountDue, paymentOrder.AmountPaid, GetChangeDue(totalAmountDue,amountPaid));
}
渡されない値は、amountPaid
(最後から2番目)です。
私が試した:
- を両方の内側と
ToString()
方法の外OrderForm
オブジェクトをインスタンス化することによってOrderFrom
クラスにamountPaid
変数を渡し、 Payment
クラスにamountPaid
変数を渡すインスタンス化オブジェクトの内側と外側の両方にオブジェクトがあり、- と入力すると、
amountPaid
va変数として、およびプロパティとしてtoString
メソッド内でリライブルです。
私は今、完全に混乱していますので、多くのストローで把握し、何をすべきか見当がつかないました正直に言うと。
あなたはそれがなぜ期待されますか?オーバーライドされたメソッドの中でパラメータなしで(つまり、AmountPaidの場合は0)、 'new Payment'をインスタンス化します。ここに0以外のものがあるとあなたに期待するものは何ですか? –
私はamountPaidパラメータの有無にかかわらず試しました。私はもう一度それを試して、まだゼロを取得します。私がそれをデバッグすると、データは "this.rtxtYourOrder.Text = orderObject.ToString();"を残すと消えます。 ToString()メソッド –