Другие языки программирования и технологии

Зачем нужен конструктор в c#?

Я не могу понять зачем нужны конструкторы в c#.Что с ними можно делать и что они дают.
Если можете, дайте пример исходника, что с конструктором можно делать.
Иван Я
Иван Я
427
присваивать значения переменным
по умолчанию даже если конструктор не задан, он всё равно будет только без параметров, любой класс неявно наследует класс object и это означает что можно создавать объекты или экземпляры класса. Также есть деструктор, который занимается "сборщиком мусора" в управляемой памяти
Имя конструктора всегда должен совпадать с именем класса
Пример
class MyClass
{
int alpha, beta;
public MyClass(int i, int j)
{
alpha = i;
beta = j;
}
}
Алексей Иванов
Алексей Иванов
2 723
Лучший ответ
В конструкторе происходит инициализация объекта класса. например, выделение памяти под какие-либо массивы, задание начальных значений переменных и т. д.
Прежде всего для унификации.
Можно было бы обойтись без конструкторов с параметрами, а просто делать в каждом классе метод, инициализирующий нужные свойства, или просто отдельные свойства: сначала создаем объект класса с помощью new, затем инициализируем все нужные свойства, каждое отдельно (а ведь они разные для разных классов, и число их различается), и только потом работаем с объектом класса, а если забыли что проинициализировать - то сразу ошибка.
С библиотеками с такими классами тяжело разбираться в первый раз - даже не знает, что надо инициализировать, а что нет.
Конструктор же человеку, пользующемуся классом, позволяет дать знать, какие свойства нужно проинициализировать, а разработчику класса - логически выделить код, который выполняется при создании объекта класса. Скажем, класс Form на самом деле основан на функции CreateWindow из WinAPI, которая и создает окно; логично, чтобы она вызывалась прям при создании оболочки окна - объекта класса Form - через new, а не каким-то левым методом.

Ну и лаконичность тоже.
Сравните:

var f = new File();
f.FileName = "D:/1.txt";
f.Encoding = Encoding.UTF8;
f.WriteLine("fff");
f.Close();

и это:

var f = new File("D:/1.txt", Encoding.UTF8);
f.WriteLine("fff");
f.Close();

Второе ведь гораздо короче и стройнее.