онструктор — это специальный метод класса, который автоматически вызывается при создании нового объекта. Конструктор используется для инициализации полей и свойств объекта.
Основные характеристики конструкторов
- Имя конструктора всегда совпадает с именем класса
- Конструктор не имеет возвращаемого типа (даже
void
)
- Конструктор вызывается автоматически при создании объекта с помощью оператора
new
- В классе может быть несколько конструкторов (перегрузка конструкторов)
Виды конструкторов
1. Конструктор по умолчанию
Если вы не определите конструктор явно, компилятор автоматически создаст конструктор по умолчанию без параметров:
public class Person
{
public string Name;
public int Age;
// Конструктор по умолчанию (можно не писать явно)
public Person()
{
}
}
// Использование
Person person = new Person();
2. Параметризованный конструктор
Конструктор с параметрами позволяет инициализировать объект значениями при создании:
public class Person
{
public string Name;
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
// Использование
Person person = new Person("Иван", 25);
3. Перегруженный конструктор
Класс может иметь несколько конструкторов с разными параметрами:
public class Person
{
public string Name;
public int Age;
// Конструктор без параметров
public Person()
{
Name = "Неизвестно";
Age = 0;
}
// Конструктор с одним параметром
public Person(string name)
{
Name = name;
Age = 0;
}
// Конструктор с двумя параметрами
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
4. Вызов одного конструктора из другого (this)
Можно вызвать один конструктор из другого с помощью ключевого слова this
:
public class Person
{
public string Name;
public int Age;
public Person() : this("Неизвестно", 0)
{
}
public Person(string name) : this(name, 0)
{
}
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
5. Статический конструктор
Статический конструктор выполняется один раз при первом обращении к классу:
public class Settings
{
public static string AppName;
static Settings()
{
AppName = "Моё приложение";
}
}
6. Приватный конструктор (Private Constructor)
Делает класс недоступным для создания экземпляров извне (например, для singleton-паттерна или утилитарных классов).
public class Singleton
{
private Singleton() { } // Приватный конструктор
public static Singleton Instance { get; } = new Singleton();
}