У меня есть переопределенный метод ToString()
, который я хочу выводить форматированные данные. Эти данные состояли из 11 разных предметов. Я могу получить только один элемент, чтобы отображать его правильно, но один элемент отображается только как 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
(второй в прошлом).
Я пробовал:
- передавая переменную
amountPaid
вOrderFrom
класса, создания экземпляра объектаOrderForm
как внутри, так и вне методаToString()
, - передавая переменную
amountPaid
вPayment
классе по инстанцировании aPayment
объект как внутри, так и снаружи методаToString
и - вызов ввода
amountPaid
va применимы в методеtoString
как переменная и как свойство.
Чтобы быть честным, я схватил столько соломинок, что теперь я полностью смущен и понятия не имею, что делать.
Почему вы ожидаете, что это будет? Вы создаете «новый платеж» внутри переопределенного метода без параметров (таким образом, 0 для суммы). Что бы вы ожидали, что здесь будет что-то другое, кроме 0? –
Я пробовал это как с параметром amountPaid, так и без него. Я просто попробовал еще раз, все равно получаю ноль. Когда я отлаживаю его, данные исчезают, когда он покидает «this.rtxtYourOrder.Text = orderObject.ToString();» и переходит к методу ToString() –