In VB.NET, We generally use ternary operator, IIF. Today we came across with some atypical behaviors. Dim a As Boolean = True Dim b As Integer = 1 Dim c As Integer = Nothing Dim d As Integer = CInt(IIf(a = True, b = 3, c.ToString())) What is the result? It throws error. Null cannot be converted to string. But if we use same statements with IF..ELSE, it will give you correct result. If (a = True) Then b = 3 Else Response.Write(c.ToString()) End If It works fine. First observation: In IIF, it evaluates both true and false conditions. That’s why it gives error. Another example: Dim a As Boolean = True Dim b As Integer = 1 Dim c As Integer = 2 Dim d As Integer = CInt(IIf(a = True, b = 3, c=4)) What is the value of B now? It should be 3, right? But, it will be 1. Yes One Second observation: a= true is right, so it goes to b=3 statement. But it won’t consider it as assignment, instead it treats as conditional EQUAL operator. So b= 3 means is 1=3 ? Obviously 1 is not equal to 3. So it returns false, which is 0. Note: When Visual Basic converts numeric data type values to Boolean, 0 becomes False and all other values become True. So my dear folks, please be careful while using IIF in VB.NET. Few things seems to be simple but very dangerous.