Правда ли что ламбда-выражения неправильно построены и не освобождают ресурсы - C#

Узнай цену своей работы

Формулировка задачи:

В одном из буржуйских форумов нашел информацию, но не до конца все было понятно. Вопрос к специалистам, правда ли что ламбда-выражения неправильно построены не освобождают ресурсы, как там было описано, что к примеру вот такая конструкция не освобождает ресурсы
Листинг программы
  1. this.Invoke( (Action)delegate
  2. {
  3. this.Text = this.DisplayText;
  4. //ну и т.д.
  5. } );
а вот такая освобождает
Листинг программы
  1. Action<Control> act = ( me ) =>
  2. {
  3. me.Text = ( me as AMButton ).DisplayText;
  4. //ну и т.д.
  5. };
  6. act.Invoke( this );
как бы получается, что ламбда-выражение, преобразуясь в делегат, в первом случае не уничтожается сборщиком мусора, т.к. есть прямая ссылка на this, а во втором случае мы передаем ссылку на this в параметр, после выполнения делегат не имея ссылок может быть удален. Жду советов по этому поводу, т.к. наблюдаю в своей программе утечки памяти, а таких ламбда-выражений как первый вариант у меня немало.

Решение задачи: «Правда ли что ламбда-выражения неправильно построены и не освобождают ресурсы»

textual
Листинг программы
  1. this.Invoke( (Action)delegate
  2. {
  3.    this.Text = this.DisplayText;
  4.    //ну и т.д.
  5. } );

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы