我在进行一些调试,因此我想记录eventArgs的值。
我有一行简单的代码,基本上是这样的:
logLine = "e.Value: " + IIf(e.Value Is Nothing, "", e.Value.ToString())
我理解的 IIF 函数的作用是如果 e.Value 是空值(null)则返回空字符串,否则返回该值的 .ToString()。然而,我却得到了一个 NullReferenceException 异常,这对我来说没有意义。
有任何想法吗?
我在进行一些调试,因此我想记录eventArgs的值。
我有一行简单的代码,基本上是这样的:
logLine = "e.Value: " + IIf(e.Value Is Nothing, "", e.Value.ToString())
我理解的 IIF 函数的作用是如果 e.Value 是空值(null)则返回空字符串,否则返回该值的 .ToString()。然而,我却得到了一个 NullReferenceException 异常,这对我来说没有意义。
有任何想法吗?
VB在Iif中不会进行短路求值。在您的情况下,无论e.Value是否为nothing,e.Value.ToString()都会被评估。
If
。 - Chris Farmer这是期望的行为。
IIF
是一个函数;因此,函数的参数将在发送到函数之前进行评估。
相比之下,C# 中的三元运算符是一种语言结构,如果三元表达式为真,则防止对第二个参数进行评估。