如何链接vb.net空合并运算符?

如何链接vb.net空合并运算符?,vb.net,Vb.net,我有一个类Customer,它包含属性扩展,而属性扩展又包含属性Any 我试着做: Dim room = If(customer.Extensions.Any.ElementAt(0).InnerText, Nothing) 但在传入的xml中找不到扩展元素时,它抛出了一个错误。我以为一旦它看到第一个表达式是nothing,它就不会返回任何内容。在这种情况下,我必须执行多重if语句吗?是的,您必须至少检查一个元素。所以你可以做的是: Dim a = customer.Extensions.A

我有一个类Customer,它包含属性扩展,而属性扩展又包含属性Any

我试着做:

Dim room  = If(customer.Extensions.Any.ElementAt(0).InnerText, Nothing)

但在传入的xml中找不到扩展元素时,它抛出了一个错误。我以为一旦它看到第一个表达式是nothing,它就不会返回任何内容。在这种情况下,我必须执行多重if语句吗?

是的,您必须至少检查一个元素。所以你可以做的是:

Dim a = customer.Extensions.Any.FirstOrDefault()
Dim room = If(a Is Nothing, Nothing, a.InnerText)
根据
customer.Extensions.Any
的类型,您可以执行以下操作:

Dim room = If(customer.Extensions.Any.Count > 0, customer.Extensions.Any(0), Nothing)

好的,我试试看。在第一个示例中,您是否使用LINQ,并且任何(0)是否会返回InnerText?另外,对于第一个和第二个示例,它是否必须是IIf?@Xaisoft:是的,我使用的是link。不,任何(0)都将导致
索引自动失效异常
。在第二个例子中,没有。
If()
操作符替换了VB 2008中遗留的
IIf()
函数
If()
就我所知不是“null coalesce”,它是内联条件的。customer是类,Extensions是类,Any是类,所以我想我不能做第二部分,因为我会假设如果其中任何一个为null,它会抛出null引用异常。@minitech
如果(x,y)
是“null coalesce”操作人员如果(x不是零,x,y),则与
相同。