Допустит, у меня есть следующие классыСначала заданы свойства базового конструктора?
class animal
{
public string name;
public animal(string name)
{
this.name = name;
}
}
, а также
class dog : animal
{
public string breed;
public dog(string name, string breed): base(name)
{
this.breed = breed;
}
}
и, наконец,
class poodle : dog
{
public poodle(string name, string breed, int hairLength): base(name, breed)
{
//in here, name is = null for some reason.
}
}
Вопрос заключается в том, что, когда у меня есть трехуровневая иерархия наследования, базы Конструктор (animal
), кажется, вызывается после конструктора poodle
(имя == null). Но в конструкторе poodle
я мог захотеть получить доступ к некоторым свойствам, которые были установлены в базовом конструкторе, и т. Д.
Кто-нибудь знает, как это можно сделать или, вопрос? (Только решение, которое я могу вспомнить, на самом деле не с помощью конструктора, а есть метод отдельной Initialize().
Спасибо!
HTTP: //stackoverflow.com/questions/140490/base-constructor-in-c-sharp-which-gets-called-first –
Erm, я просто базовый конструктор выполняет сначала. –
@Steve, пожалуйста, покажите код, который не работает (и прокомментируйте способ, которым вы ожидаете его работы). До сих пор 'this.name' должно быть прекрасно внутри конструктора Dog (BTW, рассмотрите следующие правила кодирования C# при написании кода примера - т.е. классы должны начинаться с верхнего регистра, такого как Animal and Dog) –