Я начал изучение языка C# и кое чего понять не могу, зачем нужно писать, например, при объявлении коллекции var list = new lisc<что-то>, нужно писать new? Где-то видел, что это нужно для того, чтобы дать память для этой коллекции, но и в других случаях слышал, что new отвечает за то, чтоб давать память, заранее спасибо за помощь
new это объявление нового экземпляра, без этого у тебя просто не скомпилируется же --- Сообщение объединено с предыдущим 14 апр 2022 типо var list создал тебе переменную, а уже new List<> дает понять что эта переменная будет типа список
feiserak, Певрое верно, но в твоём втором высказывании не совсем так: var list это АБСОЛЮТНО тоже самое что и List<> list , это просто синтаксичейский сахар для того чтобы укоротить запись а также не иметь проблем с анонимными типами. Но компилятор всегда точно знает что за тип скрывается за "var" и если он вдруг не может этого определить он жалуется (например var list = null; ). А new List<> выделит пямять под объект и вернёт ссылку на него. Хотя если честно я не совсем понимаю откуда у ТС возник этот вопрос, возможно он пришёл в C# например с питона где синтаксис вызова конструктора эквивалентен вызову функции и там не используется "new", но по факту и там и там отрабатывает конструктор класса/структуры который выделяет память под объект.
vtlstolyarov, У меня этот вопрос появился из-за того, что я никогда не изучал программирование и решил начать с C#, и там для создания переменной пишут по типу "Int i;" или присваивают значение "Int i = 10;", а тут я увидел, что применяют new, вот и подумал, почему нельзя написать "list<> list;", а потом добавлять в эту коллекцию новые элементы через add.
Anzen211, Если почитать определение Динамические структуры данных, то думаю должно стать понятно : Динамические структуры данных – это структуры данных, память под которые выделяется и освобождается по мере необходимости. Динамические структуры данных в процессе существования в памяти могут изменять не только число составляющих их элементов, но и характер связей между элементами То есть такие типы данных как int, double, float, long, bool - это данные с фиксированным объемом памяти (то есть их один раз как задал, то места они больше не будут занимать -> отсюда и следует строгая типизация, в отличае от Python) (кстати их тоже можно создавать через оператор new: int i = new(i)). А такие типы данных как List, Dictionary и другие динамические структуры данных - у них объем занимаемой памяти может отличаться (поэтому и возвращается ссылка на объект, а не полностью объект) (кстати обычные массивы [] - это тоже данные с фиксированным объемом памяти, то есть как один раз в коде задал массив - таким он и будет, если ты конечно сам его не будешь пересоздавать)