prakash, chỉ vì mục đích chính xác/đầy đủ: không đúng sự thật là các biến sẽ không thể truy cập được sau khi vòng lặp kết thúc. Chúng tôi thường giả định rằng đối tượng được tạo ra rất đơn giản, trong đó có thể là không phải như vậy. Ví dụ, bạn có thể thêm đối tượng vào danh sách chung bên trong hàm tạo, vì vậy tất cả các đối tượng vẫn có thể truy cập sau khi kết thúc vòng lặp.
Sự khác biệt có liên quan là điểm được chỉ ra bởi kbrinley, vì bạn không thể sử dụng biến (tham chiếu đối tượng) nằm ngoài phạm vi (bất kể từ {đến}) trong ví dụ đầu tiên. Kể từ lần thứ hai bạn khai báo biến ngoài vòng lặp, bạn vẫn có thể sử dụng biến.
Như Marc Gravell nói, IL tạo ra là như nhau cho cả hai, vì vậy không nên có sự khác biệt về hiệu suất, bộ nhớ nghề nghiệp, vv cho vòng lặp. [1]
1: Vì trên ví dụ thứ hai chắc chắn giữ lại một tham chiếu đến biến cuối cùng, Garbage Collector sẽ không thể giải phóng không gian của nó. Vì vậy, sau khi vòng lặp kết thúc, sẽ có sự khác biệt tinh tế.
Nguồn
2010-02-23 20:35:04
+1 vì điều đó thực sự thú vị. –
Như thường lệ Marc, bạn cung cấp vượt quá mong đợi. Phạm vi khi làm lambda là một hạt khó khăn để crack đôi khi.Tôi chắc chắn tất cả chúng ta đã bị đốt cháy bởi vấn đề phạm vi mà bạn chỉ ra ở trên. Tôi biết tôi có. Chúc mừng! – TheSoftwareJedi