いつもお世話になります
VB.Net 2003 WinXP
以下のようなコードを書いた場合
Private Sub Test()
Dim i As Integer
Dim ANS As String
If True Then
If False Then ANS = "??"
Else
ANS = ""
End If
End Sub
ANSに??が代入されます。しかし下記のようなコードですと
Private Sub Test()
Dim i As Integer
Dim ANS As String
If True Then
If False Then
ANS = "??"
End If
Else
ANS = ""
End If
End Sub
正常に動作するようです。これは明らかにIFの判定が
ただしく認識されていないのではないでしょうか?
この件に関してMSの技術情報などを探してみたのですが
残念ながら見つけることができませんでした。
この件に関する技術情報や対策などが掲載されているURL等が
ありましたら教えてください。
このような現象すぐに見つかると思うので自分が第一発見者とは思いにくいです。VBの世界ではこういう書式自体がNGなのでしょうかねぇ・・・
当方で実験したところ、1つ目も2つ目も、ANSには何も代入されずに
Notingとなります。
シングルステップだと1つ目の場合にANS = "??"に実行ステップの表示が
移りますが、実行はされていない模様です。
確認環境はVB.Net 2003 WinXPです。
脱字です。
誤)Noting → 正)Nothing
>シングルステップだと1つ目の場合にANS = "??"に実行ステップの表示が
>移りますが、実行はされていない模様です。
wホントだ★同様の現象を確認。結果が代入されてないことも確認。
VB.Net 2003 Win2000
たしかに!
VB 2005 及び EXCEL VBA(たぶん VB6.0でも・・未確認)では問題なしでした。
[VB6.0(SP5)]で再現されないことを確認。
>このような現象すぐに見つかると思うので自分が第一発見者とは思いにくいです。
結果が問題ないから発見してもWEBに掲載する人は少ないかもねぇ。
…オイラは知りませんでした( _)_
>VBの世界ではこういう書式自体がNGなのでしょうかねぇ・・・
書式で許されてるし、お決まりの単純コード(Exit Sub)とかでは
使ってますよ。ただ、コーディング規約で使わないようにしてる
所はあるかも。…代入式は1命令でも複数行に書くかなぁ…
後々、同じ条件で代入式が増える可能性が高いから。
特攻隊長まるるうさん、なんか微妙に質問者と食い違っているような。(^^;
>ANSに??が代入されます。しかし下記のようなコードですと
条件が揃わなくても、ANS = "??"が実行されると言ってます。
多分質問者さんは、デバッガ−が ANS = "??"をスキップしないので
??が代入されてると勘違いされてるのでは。
ちなみにILは全く同じ物が吐き出されました。
我龍院忠太のおっしゃる通り,ステップが移動したので
値がかわってると思ってました
確認したら実際にはANSに代入されてなかったですね・・・
解決でいいのかなぁ・・・まぁいいか^^;
我龍院忠太→我龍院忠太さんで・・・
我龍院忠太→我龍院忠太さんで・・・
ツイート | ![]() |