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

标签 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;
    }
}

问题是 parent 总是以 null 结尾。

执行此操作的正确方法是什么? (也许我可以将我的缓慢归咎于感冒..)

已编辑以更正拼写错误(这不是实际代码中的问题!)

最佳答案

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

但是,我不推荐这样做。相反,我建议在 class1 中延迟初始化 class2 实例。根据在 Class2 的构造函数中所做的一切,您可能会把自己带入恶劣的境地。

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

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

相关文章:

c# - .net 核心应用程序目标 Linux 上的 .net framework 4.5.2

c# - DirectorySearch.PageSize = 2 不起作用

c# - MVVM和序列化-如何访问类的实例? [复制]

C++:使用 Eigen 时将函数传递给构造函数

typescript - TypeScript 类构造函数中的可选参数

c# - MS 办公字 : How to create a custom minibar to a content control (richtext) in C#?

c# - 可空属性引发验证错误,而它不应该

python - 从类构造函数 [Python/Traits] 中更改属性参数

c++ - 为什么我不能将命名空间放在父类构造函数调用中?

java - 调用另一个构造函数时有什么方法可以访问 this.toString() 的值吗?