2011-08-17 2 views
1

この単純なメソッドを使用して、Intを返すページからクエリ文字列を取得します。有効なIDが見つからない場合は、デフォルト値のint 0を返します。クエリを取得するメソッドのreturn文の構文が改善されました。

私は詳細には、この方法を書くためのより良い方法があるかどうかを知りたい:

  • 2だけではなく、単一のreturn文活用でしょうか?はいの場合は、それを行うための最善の方法は何ですか?
  • クエリ文字列を取得するときに他のチェックを行いますか?

ありがとうございます。

protected int GetPageIndex() 
{ 
    int output; 
    bool result = Int32.TryParse(Request.QueryString["page"], out output); 
    if(result) 
     return output; 
    return output = 0; // Return Default value 
} 

答えて

5

でいいよ...変換が失敗した場合とにかく、Int32.TryParseは0に値を設定します。 .. :)私はいけないこれはどのようにクエリ文字列をチェックに関して、以下のコードを使用するhttp://msdn.microsoft.com/en-us/library/f02979c7.aspx

protected int GetPageIndex() 
    { 
     int output = 0; 
     Int32.TryParse(Request.QueryString["page"], out output); 
     return output; 
    } 
+2

変換が失敗した場合、 'TryParse'は入力値を無視して' 0'に設定するので、 '0'で初期化する必要はありません。別の値( 'int output = 1')で初期化すると、失敗した変換の後でも' 0'の値を持ちます。したがって、初期化することは紛らわしいかもしれません。 – awe

+2

私は知っています。私はちょうど私の変数を初期化したい.... :) –

0

私はあなたがそれを解析しようとする前に、ちょうどそれを初期化し

protected int GetPageIndex() 
{ 
    int output = 0; 
    Int32.TryParse(Request.QueryString["page"], out output); 
    return output; 
} 
+1

「結果」のポイントは何ですか? –

+0

常に0を返します。D – Kheldar

+0

@Mr。失望 - あなたは正しい、結果は冗長で、元のコードから残っている。私の答えを編集しました – Hassan

0
int output; 
return Int32.TryParse(Request.QueryString["page"], out output) ? output : 0; 
+3

みんな、下のコメントにコメントを追加してください – GibboK

+0

@GibboKこのdownvoteを理解することは難しいです。はい、コードは完璧ではありません、単純に出力変数を返すことができますが、そのような構造を使用すると、コードを理解するのが簡単です。 – Adi

1

あなたがNEと思いますtryパースがnull値を処理する必要があるため、nullをチェックするためにedを使用します。

protected int GetPageIndex() 
{ 
    int output; 
    return Int32.TryParse(Request.QueryString[ "page" ], out output) ? output : 0; 
} 
+3

人々はなぜ言わずにdownvoteをしないでください – WraithNath

+0

これは確かに最も簡単な形式であり、 '0'以外のデフォルト値も可能です。 – awe

3

あなたは一見TryParseが成功したか、と最初はoutput0の値を割り当てることによって、明確にするため、そして、それがどうなるかであるかどうかの心配じゃないので、あなたは、単にoutputを返却しても安全ですとにかくTryParseが失敗した場合に返されます。

protected int GetPageIndex() 
{ 
    int output = 0; 
    int.TryParse(Request.QueryString["page"], out output); 
    return output; 
} 
+0

まったく同じ返信... 1分で打ち負かす...;) –

+0

時間がかかりますが、これまでに1時間単位で殴られたことはありません - それはその敵の人によって究極の帰還になるでしょう。 ;) –

+0

変換が失敗した場合、 'TryParse'は入力値を無視して' 0'に設定するので、 '0'で初期化する必要はありません。別の値( 'int output = 1')で初期化すると、失敗した変換の後でも' 0'の値を持ちます。したがって、初期化することは紛らわしいかもしれません。 – awe

関連する問題