1

次のように、パラメーターなしのコンストラクター クラスからクラスを派生させています。

public class Base
{
    public Base(Panel panel1)
    {

    }
}

public class Derived : Base
{
    public Derived() : base(new Panel())
    {
        //How do I use panel1 here?
    }
}

Derived で panel1 を参照するにはどうすればよいですか?

(簡単な回避策を歓迎します。)

4

4 に答える 4

4

Adil の答えは、変更できることを前提としていますBase。できない場合は、次のようにすることができます。

public class Derived : Base
{
    private Panel _panel;

    public Derived() : this(new Panel()) {}

    private Derived(Panel panel1) : base(panel1)
    {
        _panel = panel1;
    }
}
于 2012-12-26T10:57:37.630 に答える
1

Panelで定義する必要があります。代わりにprotectedBaseを使用することもできます。アクセス指定子の詳細については、こちらをご覧くださいpublic

public class Base
{
    public Panel panel {get; set;};
    public Base(Panel panel1)
    {
         panel = panel1;
    }
}


public class Derived : Base
{
    public Derived() : base(new Panel())
    {
          //  this.panel
    }
}
于 2012-12-26T10:54:29.930 に答える
0

ふたつのやり方:

public class Derived : Base
{
    Panel aPanel;

    public Derived() : this(new Panel()) {}

    public Derived(Panel panel) : base(aPanel)
    {
        //Use aPanel Here.
    }
}

また

public class Base
{
    protected Panel aPanel;

    public Base(Panel panel1)
    {
        aPanel = panel1
    }
}
于 2012-12-26T10:56:56.433 に答える
0
public class Base
{
    // Protected to ensure that only the derived class can access the _panel attribute
    protected Panel _panel;
    public Base(Panel panel1)
    {
        _panel = panel1;
    }
}

public class Derived : Base
{
    public Derived() : base(new Panel())
    {
        // refer this way: base.panel
    }
}


さらに、派生クラスに set ではなく get のみを提供する場合は、次のようにします。

 public class Base
    {
        // Protected to ensure that only the derived class can access the _panel attribute
        private Panel _panel;
        public Base(Panel panel1)
        {
            _panel = panel1;
        }

        protected Panel Panel
        {  get { return _panel; } } 
    }

    public class Derived : Base
    {
        public Derived() : base(new Panel())
        {
            // refer this way: base.Panel (can only get)
        }
    }
于 2012-12-26T10:57:11.127 に答える