$ 0 0 IIf is an actual function, so all arguments get evaluated. The If keyword was added to VB.NET 2008 to provide the short-circuit functionality you're expecting.TrylogLine = "e.Value: "+ If(e.Value Is Nothing, "", e.Value.ToString())