ReSharper 6.0 me da la advertencia "Acceso al cierre modificado" para el identificador dr
en el primer fragmento de código.¿Se resuelve el "Acceso al cierre modificado" por sintaxis de comprensión?
private IEnumerable<string> GetTheDataTableStrings(DataTable dt) {
foreach (DataRow dr in dt.Rows) {
yield return GetStringFuncOutput(() => dr.ToString());
}
}
creo que tengo una comprensión básica de lo que esta advertencia está tratando de protegerme de: dr
cambia varias veces antes de que se interroga de salida de GetTheDataTableStrings, por lo que la persona que llama no puede obtener la salida/comportamiento que espero.
Pero R # no me da ninguna advertencia para el segundo fragmento de código.
private IEnumerable<string> GetTheDataTableStrings(DataTable dt) {
return from DataRow dr in dt.Rows select GetStringFuncOutput(dr.ToString);
}
¿Es seguro para mí descartar esta advertencia/preocupación al usar la sintaxis de comprensión?
Otro código:
string GetStringFuncOutput(Func<string> stringFunc) {
return stringFunc();
}
Tuve que eliminar/simplificar este código antes de presentarlo. Avíseme si algo sobre el código le impide hablar sobre la pregunta. – lance