Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类间错误_C#_Oop - Fatal编程技术网

C# 类间错误

C# 类间错误,c#,oop,C#,Oop,为了解释我的问题,我做了这个代码 应用程序将运行类控件,并从中创建其他两个类serial和UIcontrol的新实例 在UI控件中,函数将调用控件中的函数,该函数将调用串行函数,该函数将调用控件中的函数,该函数将调用UIcontrol中的函数,该函数将执行其他操作 我知道这很疯狂,但我需要这个功能 public class control // My application will enter here { private serial serial_; private UIc

为了解释我的问题,我做了这个代码

应用程序将运行类控件,并从中创建其他两个类serial和UIcontrol的新实例

在UI控件中,函数将调用控件中的函数,该函数将调用串行函数,该函数将调用控件中的函数,该函数将调用UIcontrol中的函数,该函数将执行其他操作

我知道这很疯狂,但我需要这个功能

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嵌入式程序员,只是一个中级程序员。但在你指出它之后,这是很明显的。