3

このコードを見てください:

System.Web.SessionState.HttpSessionState ss = HttpContext.Current.Session["pdfDocument"] ?? false;

        if ((Boolean)ss)
        {
            Label1.Text = (String)Session["docName"];
        }

基本的に、HttpContext.Current.Session ["pdfDocument"]がnullでないかどうかを確認し、ブール値にキャストしない場合は、trueかfalseかを確認します。

私はネストされたifステートメントを避けようとしており、それを行うためのよりエレガントな方法があると考えました。したがって、私は条件付きの回答を含む回答にのみ興味がありますか?オペレーター。

任意のヒント?

4

7 に答える 7

4

なぜss変数を使用するのですか?

これはどうですか:

if (HttpContext.Current.Session["pdfDocument"] != null)
{
    Label1.Text = (String)Session["docName"];
}
于 2010-10-13T12:10:24.620 に答える
2
    object ss = HttpContext.Current.Session["pdfDocument"] ?? false; 
    if ((Boolean)ss) 
    { 
        Label1.Text = (String)Session["docName"]; 
    } 
于 2010-10-13T12:08:49.017 に答える
1

何を求めているのか正確にはわかりませんが、どうでしょうか。

System.Web.SessionState.HttpSessionState ss;

Label1.Text = (Boolean)((ss = HttpContext.Current.Session["pdfDocument"]) ?? false) ? (String)Session["docName"] : Label1.Text;

有効なセッションまたはnullのいずれかでssを残す必要があり、falseをssに格納しようとする問題を回避し、後続の「if」を完全にスキップします。Label1.Textの繰り返しがありますが。

注:これは、以下のDaveによるコメントを考慮して編集されています。

于 2010-10-13T12:11:31.933 に答える
0

問題は、これができないことです。

SessionState.HttpSessionState ss = false;

ネストされたifを拡張メソッドに入れて、代わりにそれを呼び出してみてください。

于 2010-10-13T12:06:13.483 に答える
0

あなたはこれを試すことができますが、それがあなたの美学に合うかどうかはわかりません:

bool isPdfDocumentSet =
     bool.TryParse((HttpContext.Current.Session["pdfDocument"] as string, 
         out isPdfDocumentSet)
             ? isPdfDocumentSet
             : false;

編集:実際には、それを行うためのさらに簡潔な方法があります:

bool isPdfDocumentSet =
     bool.TryParse(HttpContext.Current.Session["pdfDocument"] as string, 
          out isPdfDocumentSet) && isPdfDocumentSet;
于 2010-10-13T12:19:46.367 に答える
0

HttpContext.Current.Sessionは、System.Web.SessionState.HttpSessionStateさまざまなオブジェクトのハッシュまたは辞書であるオブジェクトです。したがって、HttpSessionStateオブジェクトを「pdfDocument」の場所として保存しない限り、最初の行は正しくありません。

boolこのスロットにまだ存在する場合と存在しない場合がある「pdfDocument」の場所に実際にを格納している場合は、それを直接ブール値にキャストしてnull合体させることができますvar ss = (bool)(HttpContext.Current.Session["pdfDocument"] ?? false);

「pdfDocument」の場所に他の種類のオブジェクトを格納している可能性がある場合は、nullをチェックすることで、現在その場所にあるかどうかを確認できますvar ss = HttpContext.Current.Session["pdfDocument"] != null;

于 2010-10-13T12:22:57.703 に答える
-1

その道をたどる解決策に最も近いのは次のとおりだと思います。

System.Web.SessionState.HttpSessionState ss = HttpContext.Current.Session["pdfDocument"];
if (ss != null)
{
    Label1.Text = (String)Session["docName"];
}
于 2010-10-13T12:08:10.950 に答える