【问题标题】:visual studio c# .NET Get, Set right? values 0visual studio c# .NET 获取、设置正确吗?值 0
【发布时间】:2017-03-12 18:53:18
【问题描述】:

在我用“

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

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

// 在 frmErgebnis 中:

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

逻辑正确吗?

【问题讨论】:

    标签: c# math logic procedure


    【解决方案1】:

    虽然Berechnung 成员在frmMain 和frmErgebnis 中是静态的,但它们是clsBerechnung 类的两个不同实例,Laenge、Breite 和Hoehe 属性不是静态的。所以在frmMain中初始化这些属性不会影响frmErgebnis中的那些。

    您要么需要以某种方式在frmMain 和frmErgebnis 之间共享clsBerechnung 的单个实例,要么将使用它们的上述属性和方法设为静态。

    【讨论】:

    • 感谢您的回答德米特里。如何在打扰其他类之间共享一个 clsBerechnung 实例?有什么想法吗?
    • 取决于clsBerechnung 使用模式。如果在所有代码中只需要一个实例,您可以使用单例模式并在您的clsBerechnung 类中声明以下内容:static clsBerechnung instance = null; public static clsBerechnung Instance { get { if (instance == null) instance = new clsBerechnung; return instance} }。这有效地提供了与在您的案例中仅具有静态属性和方法相同的功能。
    • 如果类上应该有多个实例,那么您可以将在一个表单类中初始化的Berechnung 变量传递给另一个。
    猜你喜欢
    • 2017-07-08
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多