我是一名新手程序员。我有一个名为 GravCalc
的类,它继承自名为 Main
的表单类。里面有许多处理不同控件的方法。这是一个代码示例。
public class GravCalc : Main
{
private static float engineer = 1.0f;
public void ShowEngineer()
{
GravCalc.engineer = 1.1f;
gravEngineerLabel.Visible = true;
gravEngineerLine.Visible = true;
}
};
我会让这些方法和类成为静态的,但这样我就无法从 Form
继承或对控件进行操作,因为它们是非静态的。
在这种情况下,我必须创建我的类的一个实例。所以我在 Main
类中写了 GravCalc myGravCalc = new GravCalc();
。
一切都在编译,但是当我启动程序时,会创建我的类的多个实例,直到它达到堆栈帧的最大数量,因此发生 System.StackOverflowException
。
我做错了什么?
编辑
我想做的是将与一个面板有关的所有方法和变量分组到一个类中。要是能静态就完美了。我让它继承自 Main
以访问我的控件,但你意识到这不是我想要的。
那么有没有可能制作一个可以对控件进行操作的类?或者我应该把所有东西都扔到那个 Form 类中吗?
最佳答案
GravCalc IS Main...所以如果在 Main 中创建 GravCalc,您将再次创建 Main,然后再次创建 Main,最终耗尽堆栈。
您要做的是找到创建原始 Main 的位置并将其替换为 GravCalc,然后从您的 Main 中取出 new GravCalc
关于c# - 我应该在哪里/如何创建我的类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16906707/