VBのコードでVBをけなすスレ
■ このスレッドは過去ログ倉庫に格納されています
0050デフォルトの名無しさん
NGNGまずは、continue の話...
もちろん...
> If Not (FuncA(i) Or FuncB()) Then
でいいんだけど、条件がたくさんある時 C なら...
if(cond1){ continue; }
...
if(cond2){ continue; }
...
と書けるけど、VB では...
If Not Cond1 Then
...
If Not Cond2 Then
...
と、どんどんネストが深くなっちゃうよね。これがちょっとね...。
で、短絡評価の方だけど...
if (funcA(i) && funcB()) { /* C 言語ね */
と
> If FuncA(i) And FuncB() Then ' VB ね。
って同じじゃないよ。C の方は、funcA(i) が 0 を返したら funcB() が呼ばれ
ないことが保証されている。これに対して、VB は FuncA(i) と FuncB() の両方
を呼んでから AND とるから必ず両方を呼んでしまう。この例じゃちょっとわかり
にくいけど、例えば「配列の中身が 0 だったら何かをする、ただし与えられる添
え字が配列の範囲外の時もある...」って言う時は C なら...
if(0 <= i && i < sizeof(a) && a[i] == 0){
と書けるけど、VB で...
If Lbound(a) <= i And i <= UBound(a) And a(i) = 0 Then
と書いちゃうと、i が範囲外の時に a(i) がエラーになってしまう。だから VB
では...
If Lbound(a) <= i And i <= UBound(a) Then
If a(i) = 0 Then
と書かないといけない。これがちょっと面倒だよね。
■ このスレッドは過去ログ倉庫に格納されています