質問

、私はセッション名などのconst文字列を持っているし、その後のgetを持つプロパティを持っていると私は通常、セッション状態でオブジェクトを処理する方法をされて、次のオブジェクトに設定されます。

「Session.Remove()」の呼び出しは(清潔で整然と物事を保つために)必要であれば、そこに大きなオーバーヘッドだったし、この除去を行う場合です。

私は思っていたことでした

私はそれが私が良い(私が知っているOCD)を感じさせる、およびセッションがクリーンであるように私は感じさせるが、私はそれが必要とされないかどうかを知りたいと思いますので、そこに基本的にSession.Removeを持っています。

private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
    get
    {
        return Session[sesMyObject] as MyObject;
    }
    set
    {
        Session.Remove(sesMyObject);
        Session.Add(sesMyObject, value);
    }
}

編集

:私は、次の私のプロパティを変更した以下の回答あたり
private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}";
public MyObject MyObjectProperty
{
    get
    {
        return Session[sesMyObject] as MyObject;
    }
    set
    {
        Session[sesMyObject] = value;
    }
}

ありがとう!

役に立ちましたか?

解決

あなたが本当にが安全になりたい<全角>場合は、IDisposableをオブジェクトに変換してみてください、それが成功した場合、処分を呼び出します。

IDisposable sesDispObj =  Session[sesMyObject] as IDisposable;
if (sesDispObj != null)
   sesDispObj.Dispose();

それ以外は、

 Session[sesMyObject] = value

タグとほとんど同じです
 Session.Remove(sesMyObject);        
 Session.Add(sesMyObject, value);

他のヒント

それはやり過ぎだ。参照のうえ MSDN

  

は、nameパラメータにはを参照している場合   既存のセッション・ステート・アイテム、   既存のアイテムが上書きされます   値を指定します。

Session[sesMyObject] = value;

読み、短く単純であり、そしてわずかに優れた性能を持っている必要がありますが、このコードは連続して非常に何度も繰り返されている場合を除き、それは違いを作るべきではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top