Могу ли я вызвать базовый конструктор класса из вызывающего кода? - PullRequest
2 голосов
/ 10 февраля 2009

У меня есть два класса, один из которых получен из другого, и оба имеют параметризованные конструкторы. Я хочу вызвать конструктор в обоих классах, когда создаю экземпляр производного класса.

Итак, мой вопрос: каков синтаксис для передачи параметров как базовым, так и производным классам из вызывающего кода?

Я пробовал что-то подобное, но оно не компилируется:

DerivedClass derivedclass = new DerivedClass(arguments):base( arguments); 

1 Ответ

12 голосов
/ 10 февраля 2009

К сожалению, вы не можете передавать значения различным конструкторам из вызывающего кода. Другими словами, это не будет работать:

Foo foo = new Foo(arg1):base(arg2)

Однако вы можете настроить конструкторы в Foo, чтобы сделать это за вас. Попробуйте что-то вроде этого:

class FooBase
{
    public FooBase(Arg2 arg2)
    {
        // constructor stuff
    }
}

class Foo : FooBase
{
    public Foo(Arg1 arg1, Arg2 arg2)
        : base(arg2)
    {
        // constructor stuff
    }
}

Тогда вы бы вызвали конструктор так:

Foo foo = new Foo(arg1, arg2)

и конструктор Foo направит arg2 к базовому конструктору для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...