Мне нравится такой способ, но я
где-то читал что анонимные методы
и делегаты с лямбда приводит к
много утечек памяти, потому что каждый раз
когда лямбда выполняется что-то
создан, но не выпущен
Нет, это не правда. Теперь используемые ресурсы не будут освобождены, пока делегат не будет собран мусором. Это так же, как и любой другой управляемый объект, но использование лямбда-выражения в большинстве случаев не менее эффективно, чем выполнение того же действия другим способом.
Это не означает, что вы не можете заставить выражение lamda вызвать большую утечку памяти, это как любой другой код. Если вы хотите сказать, сделайте что-то вроде
(x => //open unmanaged resource here and not close it....)
и вызывать это в цикле foreach
, это может быть очень плохо.
То, что вы должны помнить, это то, что ваше выражение Lamda по существу
(XElement el) => PrintXElementName(el,i++)
void Your_Function (XElement el)
{
PrintXElementName(el,i++);
}