我正在使用C#和ASP.NET 3.5。在應用程序狀態下存儲通用列表
我在HttpContext.Current.Application中存儲了一個通用列表,以便網站的所有頁面都可以訪問它。當我將其值分配給本地頁面上的本地變量以供本地使用時,我對本地變量所做的任何更改都會反映迴應用程序狀態的原始列表中。當我在本地分配時,就好像直接引用了應用程序狀態變量。
下面是一些示例代碼,它實例化一個本地通用列表變量,向該變量添加3個字符串,將該變量添加到應用程序狀態,從本地變量中刪除一個項目,並打印出計數。結果是從本地變量中刪除的一個項目也從應用程序狀態的相應列表中刪除。
-- generic list in Application state
Response.Write("<BR><BR><b>list (generic) example in Application</b><BR><BR>");
List<string> productList = new List<string>();
productList.Add("1");
productList.Add("2");
productList.Add("3");
HttpContext.Current.Application["productList"] = productList;
Response.Write("product segments: " + productList.Count + "<BR>");
Response.Write("product segments in application cache: " + ((List<string>)HttpContext.Current.Application["productList"]).Count + "<BR>");
productList.Remove("1");
Response.Write("product segments: " + productList.Count + "<BR>");
Response.Write("product segments in application cache: " + ((List<string>)HttpContext.Current.Application["productList"]).Count + "<BR>");
隨意在aspx文件中運行此代碼並自己查看結果。
問題:如何將泛型存儲在應用程序狀態中,以便可以將它們分配給局部變量,並且對該局部變量的更改不應該傳播迴應用程序狀態變量?
順便說一下,這也在會話狀態中發生。在應用程序或會話中存儲泛型時遺漏了什麼?
感謝您的幫助。
謝謝,這使得事情點擊我的腦海。 – 2009-10-01 03:01:15