C# 类间错误
为了解释我的问题,我做了这个代码 应用程序将运行类控件,并从中创建其他两个类serial和UIcontrol的新实例 在UI控件中,函数将调用控件中的函数,该函数将调用串行函数,该函数将调用控件中的函数,该函数将调用UIcontrol中的函数,该函数将执行其他操作 我知道这很疯狂,但我需要这个功能C# 类间错误,c#,oop,C#,Oop,为了解释我的问题,我做了这个代码 应用程序将运行类控件,并从中创建其他两个类serial和UIcontrol的新实例 在UI控件中,函数将调用控件中的函数,该函数将调用串行函数,该函数将调用控件中的函数,该函数将调用UIcontrol中的函数,该函数将执行其他操作 我知道这很疯狂,但我需要这个功能 public class control // My application will enter here { private serial serial_; private UIc
public class control // My application will enter here
{
private serial serial_;
private UIcontrol UIcontrol_;
public control()
{
serial_ = new serial(this);
UIcontrol_ = new UIcontrol(this);
}
public void controlToGUI()
{
UIcontrol_.stopHere();
}
public void controlToSerial()
{
serial_.serialToControl();
}
}
public class UIcontrol
{
private static control myParent;
public UIcontrol(control parent)
{
myParent = parent;
UItoControl();
}
public void UItoControl()
{
myParent.controlToSerial();
}
public void stopHere()
{
int i = 2;
}
}
public class serial
{
private static control myParent;
public serial(control parent)
{
myParent = parent;
}
public void serialToControl()
{
myParent.controlToGUI();
}
}
我收到错误代码到达以下位置时,Test App.exe中发生类型为“System.NullReferenceException”的未处理异常:
public void controlToGUI()
{
UIcontrol_.stopHere(); // This line gives me the error
}
因为:UIcontrol=新UIcontrol此;未完成执行,即UIcontrol_uu仍然为空。
这就是为什么:
在分配新任务之前,请执行此操作;要UIcontrol,它需要完成初始化新对象,但没有完成,因为构造函数仍在调用其他函数,并且没有完成。
您可以做的是删除UItoControl;来自UIcontrol构造函数的方法调用如下所示:
public UIcontrol(control parent)
{
myParent = parent;
}
public control()
{
serial_ = new serial(this);
UIcontrol_ = new UIcontrol(this);
UIcontrol_.UItoControl();
}
并在初始化UIcontrol后调用该方法,如下所示:
public UIcontrol(control parent)
{
myParent = parent;
}
public control()
{
serial_ = new serial(this);
UIcontrol_ = new UIcontrol(this);
UIcontrol_.UItoControl();
}
我知道这很疯狂,但我需要这个功能。lol。这么多可能的笑话。在UI控件中,一个函数将调用一个控件中的函数,该函数将调用一个串行函数,该函数将调用一个控件中的函数,该函数将调用UIcontrol中的函数-修改您的设计。您要实现什么?另一件事:为什么方法和类的名称是这样的?它看起来像是java、C和个人电脑之间的奇怪混合touch@MikeCheel那不是真的是的,它工作得很好,谢谢你:也许我应该提到,我对c非常陌生。我不是c程序员,但这在所有面向对象语言中都很常见:嗯,我是一个c嵌入式程序员,只是一个中级程序员。但在你指出它之后,这是很明显的。