«Доступ к измененному закрытию» разрешается синтаксисом понимания?

ReSharper 6.0 выдает мне предупреждение «Доступ к измененному закрытию» дляdr идентификатор в первом фрагменте кода.

private IEnumerable<string> GetTheDataTableStrings(DataTable dt) {
    foreach (DataRow dr in dt.Rows) {
        yield return GetStringFuncOutput(() => dr.ToString());
    }
}

Я думаю, что у меня есть общее представление о том, что это предупреждение пытается защитить меня от:dr изменяется несколько раз, прежде чем запрос GetTheDataTableStrings будет опрошен, и поэтому вызывающая сторона может не получить вывод / поведение, которое я ожидаю.

Но R # не дает мне никакого предупреждения для второго фрагмента кода.

private IEnumerable<string> GetTheDataTableStrings(DataTable dt) {
    return from DataRow dr in dt.Rows select GetStringFuncOutput(dr.ToString);
}

Безопасно ли мне отбрасывать это предупреждение / беспокойство при использовании синтаксиса понимания?

Другой код:

string GetStringFuncOutput(Func<string> stringFunc) {
    return stringFunc();
}

Ответы на вопрос(2)

Ваш ответ на вопрос