Using VB.NET IIF I get NullReferenceException
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.
Try
logLine = "e.Value: " + If(e.Value Is Nothing, "", e.Value.ToString())
VB does not do short-circuiting evaluation in Iif. In your case, e.Value.ToString() is being evaluated no matter whether e.Value is nothing.
This is the expected behaviour.
IIF
is a function; therefore the parameters for the function will be evaluated before sending it to the function.
In contrast, the ternary operator in C# is a language construct that prevents the evaluation of the second parameter if the expression of the ternary is true.