«Доступ к измененному закрытию» разрешается синтаксисом понимания?
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();
}