ReSharper 6.0 mang lại cho tôi cảnh báo "Truy cập đóng cửa đã sửa đổi" cho số nhận dạng dr
trong đoạn mã đầu tiên."Truy cập vào đóng cửa đã sửa đổi" có được giải quyết bằng cú pháp hiểu không?
private IEnumerable<string> GetTheDataTableStrings(DataTable dt) {
foreach (DataRow dr in dt.Rows) {
yield return GetStringFuncOutput(() => dr.ToString());
}
}
Tôi nghĩ rằng tôi có một sự hiểu biết cơ bản về những gì cảnh báo này đang cố gắng bảo vệ tôi khỏi: dr
thay đổi nhiều lần trước khi ra GetTheDataTableStrings được thẩm vấn, và do đó người gọi có thể không nhận được đầu ra/hành vi của tôi mong đợi.
Nhưng R # không cho tôi bất kỳ cảnh báo nào đối với đoạn mã thứ hai.
private IEnumerable<string> GetTheDataTableStrings(DataTable dt) {
return from DataRow dr in dt.Rows select GetStringFuncOutput(dr.ToString);
}
Tôi có an toàn khi loại bỏ cảnh báo/quan ngại này khi sử dụng cú pháp hiểu không?
mã khác:
string GetStringFuncOutput(Func<string> stringFunc) {
return stringFunc();
}
Tôi đã phải chà/đơn giản hóa mã này trước khi trình bày. Hãy cho tôi biết nếu có điều gì đó về mã ngăn bạn thảo luận câu hỏi. – lance