0
.NET運行時是否在序列化到SQL會話狀態/ InProc會話狀態時維護對象引用;在序列化/反序列化?在下面的例子中,我希望引用指向同一個對象。 有人可以解釋爲什麼事實並非如此。對象序列化和參考平等
例如爲:
var list = new List<Foo> { new Foo { Name = "foo" }, new Foo { Name = "bar" } };
var bar = list.Single(x => x.Name == "bar");
Session["list"] = list;
Session["bar"] = bar;
var listDeserialized = (List<Foo>)Session["list"];
var barDeserialized = (Foo)Session["bar"];
Assert.IsTrue(Object.ReferenceEquals(listDeserialized[1], bar)); // false
/* class definition */
[Serializable]
public class Foo {
public string Name { get; set; }
}
注:假設list
和bar
對象已經系列化/保存到SQL。
它怎麼可能保持相同的參考?這個引用只是一個指向一段內存的指針,所以一旦你反序列化,它就會分配一塊新的內存並把它放入內存中。 – DoctorMick