C# - 使用“this”作为初始化子类的参数

时间:2013-05-02 08:55:51

标签: c# oop

我想知道使用“this”作为初始化子类的参数是个好主意?如果我想更好地问它,我应该问一下,在OOP世界中,从子类访问父类变量是个好主意吗?

由于

3 个答案:

答案 0 :(得分:2)

您似乎正在计划做这样的事情:

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方法。对于更高级的方案,您应该记住的一件事是,现在您在这两个对象之间有一个循环引用,并且垃圾收集器在仍然引用它们时将无法收集它们中的任何一个。

答案 1 :(得分:1)

  

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

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

您声明类,从 child 类派生,从 child 类,您可以访问父级public,{{ 1}}和protected(如果 child parent 在同一个程序集中)成员。

这是 OOP设计的优点。

如果你问其他问题,请澄清。

答案 2 :(得分:0)

根据子类的定义

  

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

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

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

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

因此,使用this作为参数来初始化子类,使其具有对其父类的访问权,是一个好主意。