dポイントプレゼントキャンペーン実施中!

Request.QueryString("testNo")で取得した値の型についてなのですが、私は文字列だと思っていました。
ところがここでわからなくなってしまったのが、
Request.QueryString("testNo")で取得した値を比較するときです。

たとえば

ttp://xxxx/xxx.aspx?testNo=3

で受取ったRequest.QueryString("testNo")を比較するとします。

if Request.QueryString("testNo") = "3" then



if Request.QueryString("testNo") = 3 then

ではどちらもTrueになるのですが、これはどうしてなのでしょう?
どういった解釈がなされているのかが知りたいです。
もしくは、書いてあるページを教えていただけると幸いです。


今までは特に気にしてなかったのですが、文字列を数値で比較しても
大丈夫なのでしょうか?
自分の書いたところ見るとどっちのパターンでも書いてあって
あやふやです。

A 回答 (3件)

HttpRequest.QueryStringはNameValueCollection型ですから,KeyもValueもStringです。


http://msdn2.microsoft.com/ja-jp/library/system. …
http://msdn2.microsoft.com/ja-jp/library/system. …

さて,今回の場合はVisual Basicですよね。
これがC#だと自動変換がないので間違いなくエラーになるのですが,VBではOption StrictがOffだと自動変換がはたらいてしまいます。さらに,デフォルト値がOffだったりします。
http://msdn2.microsoft.com/ja-jp/library/zcd4xwz …

いろいろとややこしいことになるので,Option StrictはOnにしておくことをお勧めします。
    • good
    • 0
この回答へのお礼

ありがとうございました。
VBは自動変換するのがデフォルトなんですね。
スッキリしました!

お礼日時:2008/02/01 09:51

しまった。

。。

読み直したら違ってたので再回答(汗



>>Dim abc as int
>>abc = CInt(request.querystring("testNo"))
>>もしくは
>>Dim abc as String
>>abc = CStr(request.querystring("testNo"))


そもそも、ASP(.netだとか、別環境じゃ知りませんが、VBScriptであることを前提とする場合。。。)だと、変数宣言に型までつけるとエラーでしたっけね(汗

Dim abc
までしかできない。ですね。

その後の、データ型変換は自分でもやってるので大丈夫かと思いますが。
    • good
    • 0

>>文字列を数値で比較しても大丈夫なのでしょうか?



ん~。ここについてだけ回答です。


>>if Request.QueryString("testNo") = "3" then
>>if Request.QueryString("testNo") = 3 then

なので。。。

Dim abc as int
abc = CInt(request.querystring("testNo"))
もしくは
Dim abc as String
abc = CStr(request.querystring("testNo"))

で、データ型を強制的に決めちゃいます。
そしてから使うと混乱しなくて済んだりします(´・ω・`)

。。。たまに、型宣言ミスって混乱する自分が言うのもなんですが(汗


http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh0 …


http://tryasp.winscom.co.jp/document/vbscript/7. …

確証はないですけど。。。
「何型なの?」って言われたとしたら、バリアント型じゃないかな。。。?程度の記述はいろんなところに落ちてました。

まぁ、それから察するに。。。
「"3"」と「3」の違いは、バリアント型だから、どっちであってもOKってことじゃないですかね。

型宣言して、格納してみてからそれぞれやってみたら変わるかも??

参考URL:http://www.mhl.janis.or.jp/~winarrow/vbscript/
    • good
    • 0
この回答へのお礼

開発環境書いてなくてすいませんでした。
バリアント型とか初めて意識しました。
ありがとうございます。

お礼日時:2008/02/01 09:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!