Для чего именно служат конструкторы в C# Зачем нужно их создавать? Дайте наглядный пример, пожалуйста. Возможно вопрос глупый, но я не понимаю =)
Конструкторы уже своим названием намекают на свою суть. Нужны они для инициализации объекта. Через них можно передавать какие-то параметры для инициализации:
class A
{
private int T;
public A()
{
T = 1;
}
public A(int t)
{
T = t;
}
public int Calc(int x) => x * t;
}
В зависимости от выбранного конструктора (передаем параметр или нет, и какой) - меняется поведение объекта. И теперь мы с помощью конструктора гарантируем, что данное поле будет заполнено значением.
Еще он хорошо подходит для инъекций зависимостей. Например так можно реализовать паттерн Стратегия:
class A
{
private IStrategy _strategy;
public A()
{
// Если берем конструктор без параметров - то создастся стратегия
// по-умолчанию
_strategy = new DefaultStrategy();
}
public A(IStrategy strategy)
{
//Если в конструктор передать стратегию - то используется она
_strategy = t;
}
public int Calc(int x) => strategy.Perform(x);
}
В классе стратегии может скрываться сколь угодно сложная логика, и в зависимости от стратегии может быть очень разный результат выполнения - возможности огромные.
Так же в конструкторе происходят инициализации разных полей класса которые того требуют:
class A
{
public readonly List<int> FooList;
public A()
{
FooList = new List<int>;
}
}
И вот вам уже не приходится думать и проверять - создали ли вы список или нет, все будет гарантировано происходить автоматом при создании объекта.
На деле все подходы сочетаются в разных комбинациях. Примерно тем же занимаются порождающие паттерны типа Абстрактных фабрик и Фабричных методов, но там свою нюансы, и фабрики не исключают использования конструкторов, скорее они друг-друга дополняют. Таким образом конструктор заключает в себе некие рутинные мероприятия которые обязаны выполняться всегда при создании объекта. Это позволяет не повторяться, и держать все в одном месте, инкапсулировать внутри класса.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не понимаю с чём может быть связана эта ошибка :
Пытаюсь считать массив целых чиселЕстественно мне на вход попадают строки и
Столкнулся с такой проблемой, необходимо генерировать текстовые файлы по шаблонуШаблоны часто меняются