Tôi đã sử dụng chúng để viết hệ thống trong ASP.NET để tạo chuỗi tương tác trang được liên kết. Nếu bạn tưởng tượng cuộc trò chuyện của người dùng với trang web dưới dạng một loạt các yêu cầu và phản hồi, bạn có thể lập mô hình tương tác dưới dạng IEnumerable
. Về mặt khái niệm, như thế này;
IEnumerable<PageResponse> SignupProcess(FormValues form)
{
// signup starts with a welcome page, asking
// the user to accept the license.
yield return new WelcomePageResponse();
// if they don't accept the terms, direct
// them to a 'thanks anyway' screen
if (!form["userAcceptsTerms"])
{
yield return new ThanksForYourTimePageResponse();
yield break;
}
// On the second page, we gather their email;
yield new EmailCapturePage("");
while(!IsValid(form["address"]))
{
// loop until we get a valid address.
yield return new EmailCapturePage("The email address is incorrect. Please fix.");
}
}
Bạn có thể lưu trữ các iterator trong trạng thái phiên, để khi trở về dùng đến trang web của bạn chỉ cần kéo các iterator ra, di chuyển iterator vào trang tiếp theo, và mang nó trở lại để render. Tương tác trang web phức tạp được mã hóa ở một nơi duy nhất.
Nguồn
2010-01-22 00:45:11
Tại sao hạn chế nó đến C#? – ChaosPandion
@Chaos: Tôi không nhận ra rằng họ cũng được hỗ trợ bởi VB. Đã chỉnh sửa. – SLaks
Thực ra, các khối lặp không phải là tính năng ".NET" (có nghĩa là: thời gian chạy). Chúng là các tính năng ngôn ngữ, được cung cấp hoàn toàn bởi trình biên dịch. –