在构造函数中传递对'this'的引用

kpo*_*ock 9 c# constructor

我知道我之前已经完成了这个,但我认为我的构造函数的执行顺序是我认为....

public class Class1
{
    Class2 _class2;

    public Class1()
    {
        _class2 = new Class2(this);
    }
}

public class Class2 
{
    Class1 _parent; //corrected typo

    public Class2(Class1 parent)
    {
        _parent = parent;
    }
}
Run Code Online (Sandbox Code Playgroud)

麻烦的是,父总是以null结尾.

这样做的正确方法是什么?(也许我可以归咎于我患感冒的缓慢......)

编辑纠正TYPO(这不是真正的代码中的问题!)

Kel*_*tex 10

您可能输错了代码,但我认为您想要Class2的这个定义(请注意Class2构造函数中的this限定符):

public class Class2 
{
    Class1 parent;

    public Class2(Class1 parent)
    {
        this.parent = parent;
    }
}  
Run Code Online (Sandbox Code Playgroud)


Ree*_*sey 10

从技术上讲,这应该可以工作,前提是您将Class2更改为包含 this.parent = parent;

但是,我不推荐这个.相反,我会建议在class1中初始化class2实例.根据Class2构造函数中的所有操作,您可能会导致自己陷入困境.

在class1上创建一个Class2属性并且延迟初始化它会导致在Class1的构造函数完成之后构造Class2,而不是在它构造期间构造,如果你的类变得更复杂,那么很可能不容易出错.