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();
}