If文条件式なしの場合の処理
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2022/12/9 11:13:00
質問文にある 『Ifの条件式が無い場合』の意味が理解できませんでした。
VB の If 文は、「Boolean 型」または「Boolean? 型」のいずれかを受け取りますが、
条件式が False として判定されたときの話をしておられますか?
※Option Strict Off の場合は、上記以外の型も渡せることがありますが、
その場合、Boolean 型への暗黙変換が発生します。
> DateCheck関数でFalseを返して、その場合If文に入らないと思っていたのですが
単純に、変数 err_flg の値も False だったということはないでしょうか?
型の間違いも考慮して、「Option Strict On」にして試してみるのも良いでしょう。
> If文内に処理が通っています。
第三者がコピー & ペーストするだけで現象を再現可能な、
最低限量のソースコードを提示できますか?
現状だと、DateCheck の実装がどうなっているのか分からないですし、
sData , Item , err_flg , err_cnt の各変数の宣言と、それぞれの実際の値も不明なので…。
VB の If 文は、「Boolean 型」または「Boolean? 型」のいずれかを受け取りますが、
条件式が False として判定されたときの話をしておられますか?
※Option Strict Off の場合は、上記以外の型も渡せることがありますが、
その場合、Boolean 型への暗黙変換が発生します。
> DateCheck関数でFalseを返して、その場合If文に入らないと思っていたのですが
単純に、変数 err_flg の値も False だったということはないでしょうか?
型の間違いも考慮して、「Option Strict On」にして試してみるのも良いでしょう。
> If文内に処理が通っています。
第三者がコピー & ペーストするだけで現象を再現可能な、
最低限量のソースコードを提示できますか?
現状だと、DateCheck の実装がどうなっているのか分からないですし、
sData , Item , err_flg , err_cnt の各変数の宣言と、それぞれの実際の値も不明なので…。
投稿者 後藤  (学生)
投稿日時
2022/12/9 11:36:49
>質問文にある 『Ifの条件式が無い場合』の意味が理解できませんでした。
VB の If 文は、「Boolean 型」または「Boolean? 型」のいずれかを受け取りますが、
条件式が False として判定されたときの話をしておられますか?
※Option Strict Off の場合は、上記以外の型も渡せることがありますが、
その場合、Boolean 型への暗黙変換が発生します。
質問の意図としましては、err_flgの宣言時に値を何も入れていないと持っていて、DateCheckの戻り値のFalseがerr_flgに渡され、FalseなのになぜIf文内に入っているのかということをお聞きしたかったです。
説明不足で申し訳ございません。
>単純に、変数 err_flg の値も False だったということはないでしょうか?
型の間違いも考慮して、「Option Strict On」にして試してみるのも良いでしょう。
まさに、その通りでした。
確認不足でした。
こんな稚拙な質問にお答えいただき、ありがとうございました。
VB の If 文は、「Boolean 型」または「Boolean? 型」のいずれかを受け取りますが、
条件式が False として判定されたときの話をしておられますか?
※Option Strict Off の場合は、上記以外の型も渡せることがありますが、
その場合、Boolean 型への暗黙変換が発生します。
質問の意図としましては、err_flgの宣言時に値を何も入れていないと持っていて、DateCheckの戻り値のFalseがerr_flgに渡され、FalseなのになぜIf文内に入っているのかということをお聞きしたかったです。
説明不足で申し訳ございません。
>単純に、変数 err_flg の値も False だったということはないでしょうか?
型の間違いも考慮して、「Option Strict On」にして試してみるのも良いでしょう。
まさに、その通りでした。
確認不足でした。
こんな稚拙な質問にお答えいただき、ありがとうございました。
投稿者 shu  (社会人)
投稿日時
2022/12/9 20:15:17
> DateCheckの戻り値のFalseがerr_flgに渡され
VB.NETではこのような動作はしません。
提示されたコードでは
> If err_flg = DateCheck(sData, Item) Then
これより前にerr_flgに値が設定されていて、DateCheckの戻り値と比較する
という処理になります。err_flgに何も設定してないと暗黙の初期化として
falseになるのでDateCheckの戻りがfalseなら
false と falseは等しいのでThenの中の処理が行われます。
DateCheckの結果がtrueであれば
false と trueは等しくないのでThenの中の処理は行われません。
VB.NETではこのような動作はしません。
提示されたコードでは
> If err_flg = DateCheck(sData, Item) Then
これより前にerr_flgに値が設定されていて、DateCheckの戻り値と比較する
という処理になります。err_flgに何も設定してないと暗黙の初期化として
falseになるのでDateCheckの戻りがfalseなら
false と falseは等しいのでThenの中の処理が行われます。
DateCheckの結果がtrueであれば
false と trueは等しくないのでThenの中の処理は行われません。
以下のソースでDateCheck関数でFalseを返して、その場合If文に入らないと思っていたのですがIf文内に処理が通っています。
If文のデフォルト設定見たいので設定できるのか、vb.netの仕様なのか教えていただきたいです。
よろしくお願いします。
If err_flg = DateCheck(sData, Item) Then
err_cnt += 1
End If