2017-08-18 9 views
-3

私はC#に新しく、私はBillsを印刷することができるC#アプリケーションを持っています。その場合は、クラス(Billprint)を使用して請求書を作成します。アプリケーションを開いた後、それは恐ろしく紙幣を印刷しますが、アプリケーションはうまく動作しますが、これを正しく行うかどうか、またはそれを修正する方法が間違っているかどうかを知る必要があります。ビル・クラスは、私は次のコードを使用することを使用するように、クラスオブジェクトを作成してC#で再利用する最も良い方法は何ですか?

List<Receipt> order; 
      order = LoadReceiptData(); 
      SessionData.setBillamount(); 

      Billprint bill = new Billprint(order, SessionData.lastbillamout, SessionData.tabel, 1); 

は、それを作成する前にbillオブジェクトが存在するかチェックしないようにする必要があるのでしょうか?それを行う方法。

+3

[C#本のプログラム方法](http://www.amazon.com)を拾い、第1章から始めることをお勧めします。うーん)試行錯誤し、あなたが遭遇するすべてのことについての質問を投稿する。 – Igor

+0

_ "...作成する前にオブジェクトが存在するかどうかをチェックする必要がありますか?" _はゼロになります。それを作成する前に家が存在するかどうかを確認する必要がありますか? – MickyD

+0

私の言語は良いではないかもしれない...しかし、私は答えを期待しています。誰が私が何を言おうとしているのか理解できた。私の本当の問題は何ですか? – user3722956

答えて

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 
    } 
} 
0

「紙幣を激しく印刷する」とは、「紙幣を連続して印刷する」ことを意味し、「作成する前にオブジェクトが存在するかどうかを確認する必要がある」と思います。私が新しいものを作成する前に請求書(Billprint)オブジェクトを持っていますか? "

はこの考えてみましょう:

while (true) 
{ 
    Billprint bill = new Billprint(order, SessionData.lastbillamout, SessionData.tabel, 1); 
} 

新しいBillprintオブジェクトが作成され、法案に割り当てられているループの周りのたびに、請求書が範囲外になると(ループの最後で)、それは参照がなくなり、将来のある時点で自動的にガベージ・ディテクタによって解放されるようになります(私たちはいつ心配する必要はありませんこれは)。

あなたの質問にお答えするには、すでにBillprintオブジェクトがあるかどうかを確認する必要はありません。不要になった場合は、忘れてガベージコレクタが自動的にクリーンアップします。

関連する問題