假设我有对象ViewState的 - 适当的方式存储在数据库数据
List<MyClass> collection = new List<MyClass>();
以及这些对象将被插入
Dictionary<string, List<MyClass>> sections = new Dictionary<string, List<MyClass>>();
// example of insertion
sections["A"].Add(collection[2]);
列表和字典存储在ViewState
字典的集合。在需要时,将字典中的对象的标识符存储起来并将它们与对象绑定在一起时,它会更符合内存吗?
Dictionary<string, List<int>> sections = new Dictionary<string, List<int>>();
// example of insertion
sections["A"].Add(collection[2].ID);
据我所知,没有性能提升,因为在第一种情况下,字典将包含大小为32/64位的引用。这是真的吗?
EDIT
MyClass
是一类,而不是一个结构。 列表和字典的声明如下:
private List<MyClass> A
{
get
{
if (ViewState["a"] == null)
{
ViewState["a"] = // retrieve data from db
}
return (List<MyClass>)ViewState["a"];
}
set
{
ViewState["a"] = value;
}
}
private Dictionary<string, List<MyClass>> B
{
get
{
if (ViewState["b"] == null)
{
ViewState["b"] = new Dictionary<string, List<MyClass>>();
}
return (Dictionary<string, List<MyClass>>)ViewState["b"];
}
set
{
ViewState["b"] = value;
}
}
是的,如果'MyClass'是'class',而不是'struct' – 2013-03-27 14:49:42
你在哪里保留你的对象?在您的页面发送给客户端后,它们将被销毁,因此即使您在视图状态中保留对它们的引用,它们也不会指向您回程中的任何有效内容。所以,你很可能需要将它们保持在会话中,并且一旦你将它们放在会话中,就没有必要在视图状态中有任何内容引用它们。 – AaronS 2013-03-27 14:56:34
修改我的帖子。 – ChruS 2013-03-27 15:08:09