Sáng nay tôi vô tình nhìn thấy đoạn mã sau, tôi khá ngạc nhiên vì nó hoạt động rất tốt.Tại sao chuỗi Request.Cookies trả về thay vì đối tượng HttpCookie trong vòng lặp foreach?
Đừng nhìn vào logic của nó xin vui lòng, tôi chỉ tò mò tại sao HttpCookieCollection (Request.Cookies trong trường hợp này) trả về một chuỗi (tên cookie) thay vì một đối tượng HttpCookie trong vòng lặp foreach. Có một vấn đề nhất quán bởi vì chúng ta thường nhận được đối tượng HttpCookie trong bộ sưu tập này bằng chỉ mục/tên?
Cảm ơn,
foreach (string cookieKey in System.Web.HttpContext.Current.Request.Cookies)
{
HttpCookie tmpCookie = System.Web.HttpContext.Current.Request.Cookies[cookieKey];
if (tmpCookie != null && tmpCookie["RecentlyVisited"] != null)
{
cookie.Add(tmpCookie);
}
}
Cảm ơn bạn, @ Chris: Tôi không hỏi làm thế nào để lặp một bộ sưu tập của vòng lặp for;) –
tôi có cùng một vấn đề, tôi không hiểu tại sao tôi phải sử dụng chuỗi insted của HttpCookie trong tuyên bố foreach. bất kỳ đầu mối? – gonxalo
nếu sử dụng System.Net.CookieCollection bạn có thể lặp lại theo cách đó. nhưng không phải với HttpCookieCollection, hành vi kỳ lạ tôi nghĩ. công khai tĩnh HttpCookieCollection CookieCollectionToHttpCookieCollection (CookieCollection cookieCollection) { HttpCookieCollection httpCookieCollection = new HttpCookieCollection(); foreach (Cookie cookie trong cookieCollection) { httpCookieCollection.Add (CookieToHttpCookie (cookie)); } trả lại httpCookieCollection; } – gonxalo