Đã thấy một số câu hỏi tương tự ở đây, nhưng không có câu hỏi nào trong số đó có vẻ là vấn đề của tôi ...Truy cập vào đóng cửa đã sửa đổi ... nhưng tại sao?
Tôi hiểu (hoặc tôi đã hiểu) khái niệm đóng cửa và hiểu điều gì sẽ khiến Người chia sẻ khiếu nại về quyền truy cập vào sửa đổi đóng cửa, nhưng trong đoạn code dưới đây tôi không hiểu làm thế nào tôi vi phạm đóng cửa.
Vì primaryApps
được khai báo trong ngữ cảnh của vòng lặp for, primary
sẽ không thay đổi trong khi tôi đang xử lý primaryApps
. Nếu tôi đã tuyên bố primaryApps
bên ngoài vòng lặp for, thì tuyệt đối, tôi có vấn đề về đóng cửa. Nhưng tại sao trong mã dưới đây?
var primaries = (from row in openRequestsDataSet.AppPrimaries
select row.User).Distinct();
foreach (string primary in primaries) {
// Complains because 'primary' is accessing a modified closure
var primaryApps = openRequestsDataSet.AppPrimaries.Select(x => x.User == primary);
Tính năng chia sẻ lại không đủ thông minh để tìm ra nó không phải là vấn đề, hoặc có lý do gì khiến tôi không thấy?
Bạn có chắc chắn muốn sử dụng 'Chọn' thay vì 'Ở đâu' không? – diceguyd30
Chọn trả về một mảng các hàng dữ liệu đã nhập ... trong đó trả về một IEnumerable của chúng. Hoặc là một người sẽ làm việc cho những gì tôi đang làm; Tôi đã đọc các bài báo nói. Chọn nhanh hơn trong các điều kiện tôi đang sử dụng. Có lẽ nó là, có thể nó không phải là, khó nói. –
Tôi lấy lại nó ... bởi vì tôi có một lambda, tôi không sử dụng datatable.select được xây dựng trong(), vì vậy tôi không nhận được một mảng các hàng đã gõ. Trong trường hợp đó, bạn chính xác, tôi không chuyển đổi các giá trị, vì vậy một nơi có ý nghĩa hơn. –