2009-02-10 3 views
2

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

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

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

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

Я удалил вашу личную почту с поста - я не хотел, чтобы вы получили спам. –

ответ

12

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

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 в базовый конструктор для вас.