0

Asp.Net プロジェクトのポストバックの間にカスタム オブジェクトの大きなリストを保存する必要がある場合、それらをセッション変数に保存してから、プロパティの List<> にキャストするのが好きです。

    public partial class MyPage : Page
    {
         private List<MyStorageObject> MyList
         {
                get {return (List<MyStorageObject>) Session["MySessionString"]; }
                set { Session["MySessionString"] = value; }
         }
    }

次に、オブジェクトのリストをそこに置き、後のポストバックでそれを呼び出すようにします。これは、オブジェクトをページのライフサイクルよりも長く存続させるためのかなり標準的な方法だと思います。

しかし、私の質問は、リストを複数回使用している場合、それを使用していくつかのことを行うと言うと、リストにアクセスするたびに、オブジェクトをリストにキャストしていると思わずにはいられません< >しかし、変数を作成すると、キャストを回避しているように見えます。

   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
   }
4

2 に答える 2

1

もちろん、キャストを回避する方が効率的です。

2つを組み合わせてみませんか?:

private List<MyStorageObject> _MyList = null;
private List<MyStorageObject> MyList
     {
            get {
                if (this._MyList == null)
                {
                    this._MyList = (List<MyStorageObject>)Session["MySessionString"];
                }
                return this._MyList;
                }
            set {
                this._MyList = value;
                Session["MySessionString"] = value; 
                }
     }
于 2013-05-08T16:17:07.960 に答える