我知道我以前做过这个,但是我认为我的构造函数的执行顺序有些曲折……。

public class Class1
{
    Class2 _class2;

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

public class Class2
{
    Class1 _parent; //corrected typo

    public Class2(Class1 parent)
    {
        _parent = parent;
    }
}

问题是父级总是以null结尾。

这样做的正确方法是什么? (也许我可以把我的迟钝归咎于感冒。)

编辑以更正打字错误(这不是真正的代码中的问题!)

最佳答案

从技术上讲,这应该可行,只要您将Class2更改为包括this.parent = parent;
但是,我不建议这样做。相反,我建议延迟在class1内初始化class2实例。根据在Class2构造函数中所做的所有操作,您可能会陷入麻烦的境地。

在class1上创建Class2属性并延迟对其进行初始化将导致Class2在Class1的构造函数完成之后而不是在构造过程中进行构造,如果您的类变得更复杂,则很可能不容易出错。

关于c# - 在构造函数中传递对 'this'的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/734715/

10-11 09:10