В приведенном ниже коде 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 одинаковы.Теперь мой вопрос к вам, ребята, как List
и 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 !
Я думаю, Томас прав.