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