我有主课:
class MainClass
{
public static void Main()
{
InputForm InputForm1 = new InputForm();
InputForm1.ShowDialog(); // show interface to prompt user
}
}
只需调用Windows窗体。此类具有以下类别:
public partial class InputForm : Form
{
public InputForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// do some calculation and then create a dictionary of items
for (int n = 1; n <= dict.Count; n++) // loop through items
{
LengthClass theLength = new LengthClass();
dict[n].calculatedLength = theLength.calcLength(arg1, arg2, dict[n].speed);
}
}
}
单击该按钮时,程序将对从电子表格读取的数据进行一些计算,并将结果保存到词典中。每个元素都是动物,我具有一些要存储在字典中的属性(例如,在“ Dog”键下,我具有平均重量的狗,平均速度等)。
使用速度和两个默认参数(arg1和arg2),我必须调用LengthClass类的方法,以便获得特定动物在arg1小时和arg2分钟内覆盖的估计长度。
LengthClass是这样的:
class LengthClass
{
public double calcLength(double arg1, double arg2, double speed)
{
// do some calculation
return x;
}
}
现在我的疑问是如何更好地设计代码。当遍历字典中的每个键时,我每次实例化LengthClass并调用其方法。
这是正确的做法吗?我想保持计算长度的方法与Windows窗体中的代码分开,以便在必要时更容易进行更改。但是我认为每次实例化该类都可能会使代码变慢,并且更好的设计可以使代码保持快速且易于阅读。有什么建议吗?
由于以下答案,似乎将calcLength方法声明为静态方法可以解决此问题,并避免需要对LengthClass进行重复实例化。
但是,如果LengthClass还有一个额外的方法,例如calcLength2(),则为了执行计算,需要调用一个新类的方法(例如helpClass),我是否需要将helpClass的方法声明为静态方法,以避免实例化helpClass从LengthClass中的calcLength2()调用其方法时?
最佳答案
在示例中,您给出的calcLength
方法不必是实例方法,因为它不使用LengthClass
的任何字段。您可以通过将此方法设为静态来避免或完全创建对象:
class LengthClass
{
public static double calcLength(double arg1, double arg2, double speed)
{
// do some calculation
return x;
}
}
那么您可以这样称呼它:
public partial class InputForm : Form
{
public InputForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// do some calculation and then create a dictionary of items
for (int n = 1; n <= dict.Count; n++) // loop through items
{
dict[n].calculatedLength = LengthClass.calcLength(arg1, arg2, dict[n].speed);
v = myPort[n].midVol;
}
}
}