Параметр Tailcall в Expression.Lambda - PullRequest
4 голосов
/ 18 августа 2011

В чем причина предоставления параметра для оптимизации хвостового вызова в

Expression.Lambda(Expression body,bool tailcall,
IEnumerable<ParameterExpression> Parameters)

Пока это не повлияет на результат, почему нам явно нужно указать его значение. И я чувствую, что всегда лучше иметь оптимизацию tailcall. У вас есть другие мысли по этому поводу

1 Ответ

2 голосов
/ 19 августа 2011

Дизайн довольно забавный.

Передав true для параметра tailcall, попытается вызвать метод в хвостовой позиции как хвостовой вызов в теле лямбды.

В хвостовой позиции вызов метода - это возвращаемое выражение.

Что касается лучшего, это субъективно.

  • Хвостовые вызовы, как правило, всегда медленнее
  • Существуют определенные правила (типы возврата должны совпадать или быть ссылками)
  • У вас нет стека трассировки для отладки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...