Конструктор - це спеціальний метод класу, який викликається при створенні нового об'єкта. Він використовується для ініціалізації полів класу.
public class Car
{
public string Model { get; }
public int Year { get; }
// Конструктор
public Car(string model, int year)
{
Model = model;
Year = year;
Console.WriteLine($"Створено новий автомобіль {Model} {Year} року");
}
}
Якщо ви не визначите жодного конструктора, C# створить конструктор за замовчуванням (без параметрів).
public class Book
{
public string Title { get; set; }
// Неявний конструктор за замовчуванням
// public Book() { }
}
// Використання:
var book = new Book(); // Працює, навіть якщо конструктор не визначений явно
Примітка: Якщо ви визначите будь-який конструктор з параметрами, конструктор за замовчуванням не буде створюватись автоматично.
Найпоширеніший тип конструктора, який приймає параметри для ініціалізації об'єкта.
public class Student
{
public string Name { get; }
public int Age { get; }
public Student(string name, int age)
{
Name = name;
Age = age;
}
}
// Використання:
var student = new Student("Іван Петренко", 20);
Клас може мати кілька конструкторів з різними параметрами.
public class Rectangle
{
public double Width { get; }
public double Height { get; }
// Конструктор для квадрата
public Rectangle(double side) : this(side, side) { }
// Основний конструктор
public Rectangle(double width, double height)
{
Width = width;
Height = height;
}
}
// Використання:
var square = new Rectangle(5); // Квадрат 5x5
var rect = new Rectangle(4, 6); // Прямокутник 4x6
| Тип конструктора | Призначення | Приклад |
|---|---|---|
| За замовчуванням | Створення об'єкта зі значеннями за замовчуванням | public ClassName() { } |
| З параметрами | Ініціалізація об'єкта з конкретними значеннями | public ClassName(params) { ... } |
| Копіювання | Створення копії існуючого об'єкта | public ClassName(ClassName source) { ... } |
| Статичний | Ініціалізація статичних членів класу | static ClassName() { ... } |
public class Computer
{
public string Model { get; }
public int RamGB { get; }
public int StorageGB { get; }
public bool IsLaptop { get; }
// Конструктор за замовчуванням
public Computer()
{
Model = "Не вказано";
RamGB = 4;
StorageGB = 256;
IsLaptop = false;
}
// Основний конструктор
public Computer(string model, int ram, int storage, bool isLaptop)
{
Model = model;
RamGB = ram;
StorageGB = storage;
IsLaptop = isLaptop;
}
// Конструктор для ноутбуків
public Computer(string model, int ram, int storage)
: this(model, ram, storage, true) { }
// Конструктор копіювання
public Computer(Computer source)
{
Model = source.Model;
RamGB = source.RamGB;
StorageGB = source.StorageGB;
IsLaptop = source.IsLaptop;
}
public override string ToString() =>
$"{(IsLaptop ? "Ноутбук" : "Комп'ютер")} {Model}, RAM: {RamGB}GB, SSD: {StorageGB}GB";
}
// Приклади використання:
var defaultComputer = new Computer();
var gamingPC = new Computer("Gaming Pro", 32, 1000, false);
var laptop = new Computer("UltraBook", 16, 512);
var copy = new Computer(gamingPC);
Використовуйте this() для виклику інших конструкторів того ж класу:
public class Person
{
public string Name { get; }
public int Age { get; }
public string Address { get; }
public Person(string name) : this(name, 0, "Невідомо") { }
public Person(string name, int age) : this(name, age, "Невідомо") { }
public Person(string name, int age, string address)
{
Name = name;
Age = age;
Address = address;
}
}