2017-03-12 6 views
0

"< -----"とマークされたデバッガは私にホーエ、ラング、ブリト、エイクプリスの値0を与えます。なぜか、私はC#で新しいです。私はplsを助けることができますか?ビジュアルスタジオC#.NET Get、Set right?値0

//クラスclsBerechnung:frmMainで

public int Laenge { get; set; } 

    public int Breite { get; set; } 

    public int Hoehe { get; set; } 

    public double Ekpreis { get; set; } 

    public double Calculation() 
    { 
     double hilf = Oberflaeche(Laenge, Breite, Hoehe)/1.52; <--- 
     hilf = Math.Round(hilf * Ekpreis, 2); 
     return hilf; 
    } 

    public double Oberflaeche(int laenge, int breite, int hoehe) 
    { 
     double hilf = 0; 
     hilf = 2 * (laenge * hoehe) + 2 * (breite * hoehe) + (breite * laenge); 
     hilf = hilf/1000000; 
     hilf = Math.Round(hilf * 0.8, 2); 
     return hilf; 
    } 

//:frmErgebnisで

static clsBerechnung Berechnung = new clsBerechnung(); 

    Berechnung.Ekpreis = Convert.ToDouble(reader["EK-Preis"]); 
    Berechnung.Laenge = Convert.ToInt32(reader["Länge"]); 
    Berechnung.Breite = Convert.ToInt32(reader["Breite"]); 
    Berechnung.Hoehe = Convert.ToInt32(reader["Höhe"]); 

    lblOberflaeche.Text = "Oberfläche: " + Convert.ToString(Berechnung.Oberflaeche(Berechnung.Laenge, Berechnung.Breite, Berechnung.Hoehe)) + " m²"; 

lblLaufmeter.Text = "Laufmeter: " + Convert.ToString(Math.Round((Berechnung.Oberflaeche(Berechnung.Laenge, Berechnung.Breite, Berechnung.Hoehe)/1.52),2)); 

//:

 static clsBerechnung Berechnung = new clsBerechnung(); 
     label1.Text = Convert.ToString(Berechnung.Calculation()); 

は正しいロジックですか?

答えて

0

BerechnungメンバーはfrmMainfrmErgebnisに静的であるが、これらは二つの異なるclsBerechnungクラスのインスタンスとLaengeBreite、及びHoehe特性が静的ではないです。したがって、frmMainでこれらのプロパティを初期化しても、frmErgebnisのプロパティには影響しません。

clsBerechnungのインスタンスをfrmMainfrmErgebnisの間で共有するか、上記のプロパティとメソッドを静的に使用する必要があります。

+0

あなたの答えドミトリーありがとう。 他のクラスとの間でclsBerechnungの1つのインスタンスを共有するにはどうすればよいですか?何か案は? –

+0

'clsBerechnung'使用パターンに依存します。すべてのコードを通して1つのインスタンスだけが必要な場合は、シングルトンパターンを使用して、 'clsBerechnung'クラスで次のように宣言します:' static clsBerechnung instance = null; public static clsBerechnungインスタンス{get {if(インスタンス== null)インスタンス= new clsBerechnung;インスタンスを返す}} '。これは事実上、静的なプロパティとメソッドを持つだけのものと同じ機能を効果的に提供します。 –

+0

クラスにいくつかのインスタンスがある場合は、あるフォームクラスで初期化された 'Berechnung'変数をもう一方のフォームクラスに渡すことができます。 –

関連する問題