каких просто объявлять переменную
без new переменная выделяется на стеке?
еще интересен такой вопрос, как в данном случае var b = new[] { 1, 1.5, 2, 2.5 }; b определяет, что массив будет типа double
new когда ты создаёшь экземпляр обьекта. для примитивных типов не используется: int, bool, string, double
берет самый специфичный тип, удовлетворяющий всем значениям
разве для struct не тоже new?
да по разному можно инициализировать
В твоём примере используется implicit conversion с типа int в тип double Грубо говоря, почти как new[] { (double)1, 1.5, (double)2, 2.5 } Только неявно. Читать про implicit operators Есть также explicit operators, это уже явная конверсия, чаще всего с потерей данных new[] { 1, (int)1.5, 2, (int)2.5 } - массив int[] из значений 1, 1, 2, 2
Да, new тоже есть, new bool() == false например)
new - вызывается для типа, для которого предусмотрен конструктор по умолчанию, если такого нет, или он не доступен - не получится
Объявление без new это по факту использование литералов, которые поддерживаются в языке. Есть список из примерно 10-15 типов, у которых есть свои литералы, и соответственно с ними принято работать без new. Надо просто заучить. В основном это структуры, исключение - string
+, типа инициализация массива, полей записей, структур и их сочетаний
Обсуждают сегодня