visual studio c# .NET 获取、设置对吗?值 0
visual studio c# .NET Get, Set right? values 0
在我用“<-----”标记的行中,调试器为 hoehe、laenge、breite、ekpre 提供了值 0。我不知道为什么,我是 c# 新手。你能帮我吗?
// 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;
}
// 在 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());
逻辑是否正确?
虽然 Berechnung
成员在 frmMain
和 frmErgebnis
中是静态的,但它们是 clsBerechnung
class 和 [=14] 的两个不同实例=]、Breite
和 Hoehe
属性不是静态的。因此在 frmMain
中初始化这些属性不会影响 frmErgebnis
.
中的属性
您要么需要以某种方式在 frmMain
和 frmErgebnis
之间共享 clsBerechnung
的单个实例,要么将使用它们的上述属性和方法设为静态。
在我用“<-----”标记的行中,调试器为 hoehe、laenge、breite、ekpre 提供了值 0。我不知道为什么,我是 c# 新手。你能帮我吗?
// 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;
}
// 在 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());
逻辑是否正确?
虽然 Berechnung
成员在 frmMain
和 frmErgebnis
中是静态的,但它们是 clsBerechnung
class 和 [=14] 的两个不同实例=]、Breite
和 Hoehe
属性不是静态的。因此在 frmMain
中初始化这些属性不会影响 frmErgebnis
.
您要么需要以某种方式在 frmMain
和 frmErgebnis
之间共享 clsBerechnung
的单个实例,要么将使用它们的上述属性和方法设为静态。