このベロコードを実行しようとすると、そのエラーが発生します。
//コード:
int Value = Convert.ToInt32(Request.QueryString["Value"] == null ? 0 : Request.QueryString["Value"]);
QueryString
したがって、値がnullの場合は値「0」を渡す必要があります。
どうすればこれを解決できますか?
このベロコードを実行しようとすると、そのエラーが発生します。
//コード:
int Value = Convert.ToInt32(Request.QueryString["Value"] == null ? 0 : Request.QueryString["Value"]);
QueryString
したがって、値がnullの場合は値「0」を渡す必要があります。
どうすればこれを解決できますか?
int Value = Convert.ToInt32(Request.QueryString["Value"] ?? "0");
文字列を渡すこともできます"0"
が、より良い方法は次のとおりです。
int Value = Request.QueryString["Value"] == null ? 0 : Convert.ToInt32(Request.QueryString["Value"]);
また、ルックアップを除外することもできます。
string str = Request.QueryString["Value"];
int value = str == null ? 0 : Convert.ToInt32(str);
これを試して
int Value = Convert.ToInt32(Request.QueryString["Value"] == null ? "0" : Request.QueryString["Value"]);
または??
オペレーターを利用する
int Value = Convert.ToInt32(Request.QueryString["Value"] ?? "0");
三項演算子の false および true ステートメントは、同じ型であるか、暗黙的に別の型に変換できる必要があります。
first_expression と second_expression の型が同じであるか、一方の型から他方の型への暗黙的な変換が存在する必要があります。
msdnから取得
これを試して:
int i;
int.TryParse(Request.QueryString["Value"], out i);
解析が失敗した場合i
は、明示的な割り当てとクエリ文字列が null かどうかのチェックなしでデフォルト値 (0) になります。