Почему я не могу просто поместить все в конструктор и почему в приведенном ниже примере вызывается метод initialize?
Вы можете поместить все это в конструктор. В этом простом случае вам следует. Конструкторы для инициализации вашего объекта.
Иногда у вас есть что-то более сложное, хотя:
- Иногда вам понадобится отдельный метод
Initialize
, потому что вы хотите вызывать его отдельно от конструкции.
- Иногда вам нужен один, потому что вы пишете несколько конструкторов, и вы хотите поделиться некоторыми реализациями между ними.
- Иногда ваша инициализация сложна, и вы хотите дать ее частям хорошие имена, чтобы вы знали, что делает ваш код. Таким образом, вы разбиваете эти части на отдельные методы.
Ни один из этих случаев не подходит для этого кода, поэтому я просто пропущу его и добавлю код в конструктор.
Есть ли соглашение, которое обычно используется?
Нет. Люди делают все, что легче всего читать и понимать, что требует написания наименьшего количества дополнительного кода и что вызывает наименьшее дублирование кода.
Однако, если вы делаете метод Initialize
общедоступным и не вызываете его из конструктора, я настоятельно рекомендую вам вызвать его Initialize
. Создайте его так, чтобы его вызывали только один раз.
В этом примере мне нужно слово «это». в методе Initialize?
Нет. Вам никогда не нужно использовать this
для доступа к членам класса, если у вас нет другой локальной переменной с тем же именем. Вот такой случай:
public class Something
{
private string someValue;
public class Something(string someValue)
{
// must use "this" to access the member variable,
// because a local variable has the same name
this.someValue = someValue;
}
}