当前位置:  开发笔记 > 编程语言 > 正文

使用VB.NET IIF我得到NullReferenceException

如何解决《使用VB.NETIIF我得到NullReferenceException》经验,为你挑选了1个好方法。

我正在做一些调试,所以我想记录eventArgs值

我有一个基本上做的简单线:

logLine = "e.Value: " + IIf(e.Value Is Nothing, "", e.Value.ToString())

我理解IIF函数的方式,如果e.Value是Nothing(null)那么它应该返回空字符串,否则它应该返回值的.ToString.我是,但是得到一个NullReferenceException.这对我来说没有意义.

有任何想法吗?



1> bdukes..:

IIf是一个实际函数,因此所有参数都会被评估.该如果关键字被添加到2008年VB.NET提供你期待短路功能.

尝试

logLine = "e.Value: " + If(e.Value Is Nothing, "", e.Value.ToString())


另外:If()是类型安全的.IIf()不是.
@atconway,显然在VB中`Nothing`就像在C#中的`default`,而不是`null`,所以当在`Boolean`是隐含类型的上下文中使用它时,它的值是`False`而不是`null`/"没什么",你通常会想到它(根据http://stackoverflow.com/q/1828173/2688).您需要将`If`的一侧强制转换为正确的类型(例如`Boolean?`)以获得所需的结果.类似地,在C#中,您需要转换一侧(但如果不这样做则是编译错误).
推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有