在以下代碼中ViewState["L"]
存儲List<string>
。我創建了一個List
的新實例,併爲其分配了一個視圖狀態的轉換值。堆謎語中的對象
List<string> myList = new List<string>();
myList=(List<string>)ViewState["L"];
Response.Write(myList.Equals(ViewState["L"]));// returns True
正如你所看到的,.Equals()
方法告訴我,ViewState對象中並在列表對象是相同的。 現在我向你們提出的問題是List
和Viewstate
如何成爲同一個對象的引用?該位置的堆內存實際上保存了什麼?
更新 下面的代碼演示了任何賦予viewstate的轉換值的變量都指向同一個對象。
List<string> myList1 = new List<string>();
myList1.Add("apple");
ViewState["L"] = myList1;
List<string> myList2 = new List<string>();
myList2 = (List<string>)ViewState["L"];
List<string> myList3 = new List<string>();
myList3 = (List<string>)ViewState["L"];;
myList3.Add("orange");//Here myList2 gets an orange too !
我想,托馬斯是對的。
此外,您的第二行代碼覆蓋您的第一行。 – 2012-01-17 19:37:33