Size: a a a

2020 September 18

VA

Viktor Akselrod in Delphi & Lazarus
Sergey Bodrov
For managed types (reference counted types), using Out parameters incurs some overhead: the compiler must be sure that the value is correctly initialized (i. e. has a reference count of zero (0)). This initialization is normally done by the caller.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Мне проще понимать параметры out как аналог Result.
источник

VA

Viktor Akselrod in Delphi & Lazarus
ShowMessage выдает 0 ес-но
источник

VA

Viktor Akselrod in Delphi & Lazarus
Михаил
А если присвоение в if?
Ошибка даже если переменная возможно будет не присвоена?
я думаю компилятор достаточно умен, что решить будет ли инициализация в любом случае или есть варианты.
источник

AI

Alexander Ivanov in Delphi & Lazarus
источник

VA

Viktor Akselrod in Delphi & Lazarus
с управляемыми типами мы уже разобрались.
неуправляемые типы в пролете.
источник

М

Михаил in Delphi & Lazarus
Хм..
То есть отличие в управляемых типах что он их по умолчанию?
источник

М

Михаил in Delphi & Lazarus
Это на Дельфи или фп?
источник

VA

Viktor Akselrod in Delphi & Lazarus
Михаил
Хм..
То есть отличие в управляемых типах что он их по умолчанию?
управляемые типы принудительно обнуляются.
но тк управляемых типов раз два и обчелся по сравнению со всеми остальными типами, то такое поведение компилятора для out скорее вводит в заблуждение.
источник

VA

Viktor Akselrod in Delphi & Lazarus
Михаил
Это на Дельфи или фп?
делфи конечно
источник

М

Михаил in Delphi & Lazarus
Viktor Akselrod
управляемые типы принудительно обнуляются.
но тк управляемых типов раз два и обчелся по сравнению со всеми остальными типами, то такое поведение компилятора для out скорее вводит в заблуждение.
А если в Дин массиве там объекты например, то все, утечка🤷‍♂
источник

SB

Sergey Bodrov in Delphi & Lazarus
Михаил
А если в Дин массиве там объекты например, то все, утечка🤷‍♂
Смотря какие объекты. type object это managed, а type class это просто указатель.
источник

AI

Alexander Ivanov in Delphi & Lazarus
в c# out параметр необходимо инициализировать, иначе ошибка будет.
источник

AI

Alexander Ivanov in Delphi & Lazarus
в delphi как всегда.
источник

VA

Viktor Akselrod in Delphi & Lazarus
Михаил
А если в Дин массиве там объекты например, то все, утечка🤷‍♂
доверять дин массиву хранение объектов единолично в целом не самая лучшая идея.
для этого есть ObjectList и тд
источник

VA

Viktor Akselrod in Delphi & Lazarus
Alexander Ivanov
в c# out параметр необходимо инициализировать, иначе ошибка будет.
источник

М

Михаил in Delphi & Lazarus
Viktor Akselrod
доверять дин массиву хранение объектов единолично в целом не самая лучшая идея.
для этого есть ObjectList и тд
А если реально objectlist то out его тупо занилит и мы ещё утечку листа получим? 🤔
источник

VA

Viktor Akselrod in Delphi & Lazarus
Михаил
А если реально objectlist то out его тупо занилит и мы ещё утечку листа получим? 🤔
objectlist это же не управляемый тип
источник

М

Михаил in Delphi & Lazarus
Viktor Akselrod
objectlist это же не управляемый тип
А, точно..
источник

VA

Viktor Akselrod in Delphi & Lazarus
поэтому и написал, что разное поведение компилятора для out аргументов, по моему мнению, больше сбивает, чем помогает
источник