2015-06-22 6 views
4

Я написал простой общий класс в C#.Пустой конструктор в классе наследования C#

class Foo<T> 
{ 
    public object O{get;set;} 
    public Foo(object o) 
    { 
     O=o; 
    } 
} 

и другой класс наследует от

class Bar:Foo<object> 
{ 
    public Foo(object o):base(o) 
    { } 
} 

Мой вопрос, могу ли я не писать, что конструктор в Bar классе, потому что он не делает ничего особенного вообще. PS: необходим параметр в конструкторе.

ответ

11

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

только конструктор компилятор будет поставлять для вас автоматически является одним из эквивалентно:

public Bar() : base() 
{ 
} 

для конкретного класса, или для абстрактного класса:

protected Bar() : base() 
{ 
} 

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

+0

и он также сообщает компилятору «не генерировать конструктор по умолчанию для этого класса» – dotctor

+1

@dotctor: Надеюсь, теперь это охвачено моим последним предложением :) –

Смежные вопросы