c# -使用"this"作为初始化子类的参数

本文关键字:quot 初始化 子类 参数 this 使用 | 更新日期: 2023-09-27 18:11:52

我想知道使用"this"作为参数初始化子类是一个好主意还是不?如果我想问得更好,我应该问在面向对象的世界里从子类访问父类变量是不是一个好主意?

谢谢

c# -使用"this"作为初始化子类的参数

看来你打算这样做:

public class MyClass
{
    private OtherClass _someProperty;
    public OtherClass SomeProperty 
    {
        get
        { 
             if (this._someProperty == null) this._someProperty = new OtherClass(this);
             return this._someProperty;
        }
    }
}
public class OtherClass
{
    private MyClass _parent;
    public OtherClass(MyClass parent)
    {
        this._parent = parent;
    }
}

这是非常标准的OOP方法。对于更高级的场景,您应该记住的一件事是,现在在这两个对象之间有一个循环引用,并且当其中一个仍然被引用时,Garbage Collector将无法收集它们中的任何一个。

在OOP世界中,从子类访问父类变量是个好主意上课还是不上课?

这不是一个想法,这就像OOP实际工作一样。

你声明类,从它派生类,从类你可以访问父的public, protectedinternal(如果在同一个程序集中)成员。

这个优秀的OOP设计。

通过定义子类:

子类是从另一个类派生出来的类,这个类现在将成为它的父类。

听起来你的代码看起来像这样:

class Parent {}
class Child : Parent {
    Parent m_parent;
    Child(Parent parent){m_parent=parent;}
}

这里不需要存储父类的引用;子类已经可以访问它的成员变量。当存在歧义时,它甚至可以使用base

因此,使用this作为参数初始化子类,使其能够访问父类,而不是是一个好主意。