Option Strict On Module Module1 Sub Main() Dim i As New Complex(0, 1) If i Then MsgBox("i") End Sub End Module Module Module2 Sub Main() Dim c As Collection ' In VB6: If Not c Is Nothing Then If c.Count > 0 Then ' ... End If End If ' In VB.NET/2005: If c IsNot Nothing AndAlso c.Count > 0 Then ' ... End If End Sub End Module Module Module3 Sub Main() Dim i As New Complex(0, 1) Dim j As New Complex(1, 0) If i AndAlso j Then ' ... End If End Sub End Module ' Definition of a class for complex numbers with double precision Structure Complex Public Re As Double Public Im As Double Public Sub New(ByVal re As Double, ByVal im As Double) Me.Re = re : Me.Im = im End Sub Public Shared Operator +(ByVal lhs As Complex, ByVal rhs As Complex) As Complex Return New Complex(lhs.Re + rhs.Re, lhs.Im + rhs.Im) End Operator ' ... End Structure ' Boolean conversion Partial Structure Complex Public Shared Widening Operator CType(ByVal rhs As Complex) As Boolean Return rhs.Re <> 0 OrElse rhs.Im <> 0 End Operator End Structure ' Operators for short-circuiting Partial Structure Complex Public Shared Operator Not(ByVal rhs As Complex) As Boolean Return rhs.Re = 0 AndAlso rhs.Im = 0 End Operator Public Shared Operator IsFalse(ByVal rhs As Complex) As Boolean Return Not rhs End Operator Public Shared Operator IsTrue(ByVal rhs As Complex) As Boolean Return rhs End Operator End Structure