投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/5/23 01:25:08
こういう場合には
If a > b AndAlso b > c Then
のように記述します。


> 実行すると
> if  a>bになっています 

『If a > b > c Then』という演算は、
『If (a > b) > c Then』の順で評価されます。

そして (a > b) の結果は、True または False になるため、これは即ち
 『If True > c Then』
 『If False > c Then』
のいずれかの意味になるわけです。

このとき、c のデータ型が Boolean だった場合には、
常に Else 句が実行されることになるはずです。
(VB においては、True よりも False の方が大きな値として扱われるため)

一方、c がもしも Integer だった場合、そこで暗黙の型変換が実行されます。
たとえば 『If CInt(a > b) > c Then』 相当という具合に。

そして、CInt(True) は -1、CInt(False) は 0 にあたりますので、
下記の実行結果は、Option Strict Off なら「真」、Option Strict On なら「エラー」扱いです。

Dim a As Integer = +2
Dim b As Integer = 0
Dim c As Integer = -2
If a > b > c Then