我是c#的新手,我有可以打印Bills的C#应用程序。在这种情况下,我使用Class(Arraylist
)来创建账单。在打开应用程序后,它会有争议地打印账单,仍然应用程序工作正常但我需要知道这样做的方式是否正确或者如果错误如何修复。使用该Bill类我使用以下代码,
@Override
public int getItemCount() {
if(machineClassList == null){return 0;}
return machineClassList.size();
}
是否有必要在创建Billprint
对象之前检查它是否存在?以及如何做到这一点。
答案 0 :(得分:1)
你有几个选择。
1)您每次只需创建一个新帐单,例如当用户点击PrintBill()
时。像这样的东西
private void PrintBill(object sender, EventArgs e)
{
Billprint bill = new BillPrint(...);
}
2)如果只有一个很重要,那么你可以看看实施singleton模式,然后在打印每个模式之前更新你的账单。像这样的东西
public class Billprint
{
private static Billprint instance;
private Billprint() {}
public static Billprint Instance
{
get
{
if (instance == null)
{
instance = new Billprint();
}
return instance;
}
}
public void UpdateBill(...)
{
// Update your bill
}
}
答案 1 :(得分:0)
通过"有争议地打印账单"我认为你的意思是"连续打印账单"并且"是否有必要在创建对象之前检查对象是否存在"我认为你的意思是"是否有必要在创建一个新账单之前检查我已经有一个账单(Billprint)对象?"。
考虑一下:
while (true)
{
Billprint bill = new Billprint(order, SessionData.lastbillamout, SessionData.tabel, 1);
}
每次循环都会创建一个新的Billprint对象并分配给bill;当账单超出范围时(在循环结束时),它不再有任何引用,因此可以在将来的某个时刻由垃圾检测器自动释放(我们不需要担心何时这是)。
所以要回答你的问题,没有必要检查你是否已经有了Billprint对象 - 如果你不再需要它,你可以忘掉它,垃圾收集器会自动清理它。