In visual basic 6 (and all previous versions) every component of a logical expression was executed.
For example if you have:

VB Code:
  1. If chk1.Value = vbChecked Or chk2.Value = vbChecked Then

Then even though the second part of the expression can have no effect if the first part is true it is always tested anyway (which is an unneccessary overhead).

VB.Net introduces two new keywords, OrElse and AndAlso. These perform a lazy evaluation i.e. if the left hand side gives you sufficient information to calculate the logical operator then the right hand side is not evaluated. The keywords or and and still operate as they did but now we have the choice of whether or not to optimise our logical operations.