C#-数据未达到重写的ToString()方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-数据未达到重写的ToString()方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3160字,纯文字阅读大概需要5分钟。
内容图文
![C#-数据未达到重写的ToString()方法](/upload/InfoBanner/zyjiaocheng/655/d2cfc728a2114ba8a6aad66144d12355.jpg)
我有一个重写的ToString()方法,我想输出格式化的数据.该数据包含11个不同的项目.我可以使除一项以外的所有项都能正常显示,但是一项仅显示为0.以某种方式,它没有达到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(倒数第二个).
我试过了:
>通过在ToString()方法的内部和外部实例化一个OrderForm对象,在OrderFrom类中传递amountPaid变量,
>通过实例化ToString方法内部和外部的Payment对象,在Payment类中传递amountPaid变量,以及
>调用将toString方法中的amountPaid变量作为变量和属性输入.
老实说,我已经抓住了很多稻草,现在我完全困惑了,不知道该怎么办.
解决方法:
您的ToString提供了错误的付款信息,因为老实说,它无权访问您正在创建的付款对象.实例化新付款无济于事:您在这里需要使用其他方法.
解决该问题的一种方法是制作FormatWithPayment方法,而不是重写ToString.最好避免在业务代码中使用纯ToString,而将其保留给调试和日志记录.
public string FormatWithPayment(Payment paymentOrder )
{
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)
);
}
它几乎与您的代码相同,只是现在传递了付款对象.
现在,您可以修改点击处理程序以使用此新方法,如下所示:
this.rtxtYourOrder.Text = orderObject.FormatWithPayment(orderPaymentObject);
内容总结
以上是互联网集市为您收集整理的C#-数据未达到重写的ToString()方法全部内容,希望文章能够帮你解决C#-数据未达到重写的ToString()方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。