Search code examples
c#mathlogicprocedure

visual studio c# .NET Get, Set right? values 0


in the line I marked with "<-----" debugger gives me for hoehe,laenge,breite,ekpreis the value 0. Idk why, I am new in c#. Can u help me pls?

// Class clsBerechnung:

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

// in frmMain:

    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));

// in frmErgebnis:

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

Is the logic correct?


Solution

  • Although the Berechnung members are static in frmMain and frmErgebnis, these are two different instances of the clsBerechnung class and the Laenge, Breite, and Hoehe properties are not static. So initializing these properties in frmMain does not affect those in frmErgebnis.

    You either need to share a single instance of clsBerechnung between frmMain and frmErgebnis somehow or make the aforementioned properties and methods using them static.