Автор Влад Твердохлебов задал вопрос в разделе Другие языки и технологии
Зачем нужен конструктор в c#? и получил лучший ответ
Ответ от
присваивать значения переменным
по умолчанию даже если конструктор не задан, он всё равно будет только без параметров, любой класс неявно наследует класс object и это означает что можно создавать объекты или экземпляры класса. Также есть деструктор, который занимается "сборщиком мусора" в управляемой памяти
Имя конструктора всегда должен совпадать с именем класса
Пример
class MyClass
{
int alpha, beta;
public MyClass(int i, int j)
{
alpha = i;
beta = j;
}
}
Ответ от Анастасия 1[гуру]
В конструкторе происходит инициализация объекта класса. например, выделение памяти под какие-либо массивы, задание начальных значений переменных и т. д.
В конструкторе происходит инициализация объекта класса. например, выделение памяти под какие-либо массивы, задание начальных значений переменных и т. д.
Ответ от [новичек]
Прежде всего для унификации.
Можно было бы обойтись без конструкторов с параметрами, а просто делать в каждом классе метод, инициализирующий нужные свойства, или просто отдельные свойства: сначала создаем объект класса с помощью 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();
Второе ведь гораздо короче и стройнее.
Прежде всего для унификации.
Можно было бы обойтись без конструкторов с параметрами, а просто делать в каждом классе метод, инициализирующий нужные свойства, или просто отдельные свойства: сначала создаем объект класса с помощью 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();
Второе ведь гораздо короче и стройнее.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Зачем нужен конструктор в c#?
Если к Вам подойдёт конструктор с проектом ВЕЧНОГО двигателя... Вы даже и не посмотрите? Как себя поведёте?
Когда человек молод и хочет учиться, то обсуждать с ним проблемы вечного двигателя очень полезно.
подробнее...
спросили в Интернет
Нужен кредитный калькулятор для сайта!
Онлайн кредитный калькулятор (c конструктором калькулятора)
// может совсем не то что
подробнее...
Нужен кредитный калькулятор для сайта!
Онлайн кредитный калькулятор (c конструктором калькулятора)
// может совсем не то что
подробнее...
спросили в C++ Книги о C++
Чем отличается коренным образом класс от структуры в c#
class C {
public int Value { get; set; }
public C(int value) {
Value = value;
}
подробнее...
Чем отличается коренным образом класс от структуры в c#
class C {
public int Value { get; set; }
public C(int value) {
Value = value;
}
подробнее...
спросили в C++ DAF
С++. Dev-C++ и Майкрософт Висуал С ++ 2008
> объясните как работать с компилятором в Dev-C++ и Micrtisoft Visual C ++ 2008
Вот с таким
подробнее...
С++. Dev-C++ и Майкрософт Висуал С ++ 2008
> объясните как работать с компилятором в Dev-C++ и Micrtisoft Visual C ++ 2008
Вот с таким
подробнее...
спросили в C++
Где можно скачать компилятор Microsoft visual C++ для Windows 7 (64 bit)
Компилятор входит в состав "Visual Studio" и "Visual C++ Express".
Visual C++ 2010
подробнее...
Где можно скачать компилятор Microsoft visual C++ для Windows 7 (64 bit)
Компилятор входит в состав "Visual Studio" и "Visual C++ Express".
Visual C++ 2010
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
C++ Классы
Судя по вопросу, вы имеете плохое представление о классах.
Поля (они же - свойства класса, они
подробнее...
Для чего нужны статические классы? (C#)
Ярким примером статического класса служит класс Console который имеет туеву хучу свойств и методов,
подробнее...
C++. Типы данных. Создание типа данных.
Минимальная граница для адресации процессора - 1 байт. Рекоммендуемая - 4 байта.
Если нужна
подробнее...
Задача на классы C++
Пару дней назад человек один задавал такой же вопрос. Но он сам решил задачу, вроде бы перегрузка
подробнее...
спросили в User all User all 0
Оператор присваивания C++
Проблема с самоприсваиванием давно и легко решена:
#include <iostream>
подробнее...
Оператор присваивания C++
Проблема с самоприсваиванием давно и легко решена:
#include <iostream>
подробнее...