c# - 我应该在哪里/如何创建我的类的实例?

标签 c#

我是一名新手程序员。我有一个名为 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/

相关文章:

c# - Azure Durable 编排功能触发两次

c# - 自动实现装饰器方法

c# - e.data.GetData 始终为空

c# - 在三元/条件运算符中转换时出现奇怪的编译器错误

c# - VS2010 中没有智能感知

c# - C#中 "this"是什么意思

javascript - 为什么舍入值不同?

c# - 如何正确处理 ItemsControl 大小更改以显示/折叠滚动按钮

c# - 微软图形 API : Getting error "Authorization_IdentityNotFound"

c# - 当某些代码位于方法中时,Quartz.NET 不触发