当我需要在我的 Asp.Net 项目的回发之间保存大量自定义对象时,我喜欢将它们保存在会话变量中,然后将它们转换为属性中的 List<> 类似这样的东西
public partial class MyPage : Page
{
private List<MyStorageObject> MyList
{
get {return (List<MyStorageObject>) Session["MySessionString"]; }
set { Session["MySessionString"] = value; }
}
}
然后我把我的对象列表放在那里,并在以后的回发中调用它。我认为这是使对象持续时间比页面生命周期更长的一种非常标准的方法。
但是我的问题是,当我不止一次使用 List 时,说我要用它做一些事情,我不禁想到每次访问它时,它都会将一个对象投射到 List< > 但如果我创建一个变量,它看起来就像是在避免强制转换。
private void DoStuffWithMyList()
{
var x = MyList;
//Assuming I'm going to call the list 20 times in my method
x.first(); // Is this any more efficient / cleaner
MyList.first(); // Than this?
//Or do they both get converted into the same thing in the end anyway
}