Re[5]: А что если убрать new в C# ?
От: CRT  
Дата: 29.08.23 12:57
Оценка:
Здравствуйте, Serginio1, Вы писали:


S>Есть https://sergworks.wordpress.com/2012/03/13/record-constructors-in-delphi/


а, ну значит я отстал. Давно дельфи не занимался. Раньше не было.

Изначально (и очень долгое время) в дельфи все классы создавались только динамически (в куче). У структур конструкторов не было.
Create именно создавал объект в куче и возвращал ссылку.
поэтому вызов
v:=TMyClass.Create;
выглядел логически. Ты создаешь объект, попутно его инициализируя, и возвращаешь ссылку, которую присваиваешь переменной которая будет хранить эту ссылку. Поэтому и назвали конструктор словом Create (хотя насколько помню имя может быть любое)


Потом они решили присобачить к структурам конструктор и решили оставить синтаксис вызова конструктора для структур таким же как и при создание объектов в динамической памяти (в куче) — то есть та же самая шляпа что и в C#.



Кстати раньше в Turbo Pascal был другой синтаксис, без оператора присваивания, и конструкторы было принято называть Init а деструкторы Done

выглядело это так при создании на стеке
var 
 s: TMyClass;
begin
  s.Init;
  s.Done;
end.


То есть ты только инициализируешь уже существующий на стеке класс

а при динамическом создании объекта выглядело по другому (через new)
Отредактировано 29.08.2023 13:26 CRT . Предыдущая версия . Еще …
Отредактировано 29.08.2023 13:20 CRT . Предыдущая версия .
Отредактировано 29.08.2023 13:18 CRT . Предыдущая версия .
Отредактировано 29.08.2023 13:17 CRT . Предыдущая версия .
Отредактировано 29.08.2023 13:15 CRT . Предыдущая версия .
Отредактировано 29.08.2023 13:06 CRT . Предыдущая версия .
Отредактировано 29.08.2023 13:05 CRT . Предыдущая версия .
Отредактировано 29.08.2023 13:02 CRT . Предыдущая версия .
Отредактировано 29.08.2023 13:02 CRT . Предыдущая версия .
Отредактировано 29.08.2023 13:01 CRT . Предыдущая версия .
Отредактировано 29.08.2023 12:58 CRT . Предыдущая версия .
Отредактировано 29.08.2023 12:58 CRT . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.