Конструктор (Constructor)
Конструкторът е специален метод, който се извиква автоматично при създаването на обект. Той инициализира полетата на класа и извършва необходимата начална настройка.
Видове конструктори
Конструктор по подразбиране
public class User
{
// Ако не дефинираме конструктор, C# създава празен конструктор по подразбиране
public User() { }
}
Параметризиран конструктор
public class User
{
private string name;
private int age;
public User(string name, int age)
{
this.name = name;
this.age = age;
}
}
Статичен конструктор
public class Database
{
private static string connectionString;
// Изпълнява се само веднъж при първото използване на класа
static Database()
{
connectionString = "Server=localhost;Database=mydb;";
}
}
Частен конструктор
public class Singleton
{
private static Singleton instance;
// Частен конструктор - не може да се създават инстанции извън класа
private Singleton() { }
public static Singleton Instance
{
get
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
}
Верижни конструктори
public class Person
{
private string name;
private int age;
private string email;
// Основен конструктор
public Person(string name, int age, string email)
{
this.name = name;
this.age = age;
this.email = email;
}
// Верижен конструктор, извиква основния
public Person(string name, int age) : this(name, age, null)
{
}
// Верижен конструктор само с име
public Person(string name) : this(name, 0)
{
}
}
Конструктор с инициализатор на обект
public class Point
{
public int X { get; set; }
public int Y { get; set; }
}
// Използване
var point = new Point { X = 10, Y = 20 };
Конструктор с параметри по подразбиране
public class Configuration
{
public string Host { get; }
public int Port { get; }
public Configuration(
string host = "localhost",
int port = 8080)
{
Host = host;
Port = port;
}
}
Конструктор в наследяване
public class Animal
{
protected string name;
public Animal(string name)
{
this.name = name;
}
}
public class Dog : Animal
{
private string breed;
// Извиква конструктора на базовия клас
public Dog(string name, string breed) : base(name)
{
this.breed = breed;
}
}
class User {
public User(string name) {
this.Name = name;
}
}