谁能告诉我为什么这个在运行时提供了一个错误:集合初始化抛出ArgumentNullException
Dim mightBeNothing As List(Of String) = Nothing
Dim a As List(Of String) = IIf(mightBeNothing Is Nothing, New List(Of String)(), New List(Of String)(mightBeNothing))
我在第二行越来越ArgumentNullException
。如果我更换了最后一部分:
Dim a As List(Of String) = IIf(mightBeNothing Is Nothing, New List(Of String)(), New List(Of String)())
它的工作原理 - 但如果mightBeNothing
是什么构造New List(Of String)(mightBeNothing)
将永远不会被调用,所以有什么问题?
谢谢,我将iif()更改为if()并且它按预期工作。不知道为什么你会希望不要短路,我只是假设它没有。 – Flash 2012-01-31 01:29:31
IIf是一个棘手的小野兽 - 我现在不做很多VB.NET,但几年前,我和它扔了我一个循环,因为我认为它会像C#三元运算符(?:) 。 – Tim 2012-01-31 01:32:38
Iif不会短路,因为它是一个普通的功能,而不是像If这样的运算符。 – 2012-01-31 01:39:59