VB.NET null合并运算符?

VB.NET null coalescing operator?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
Coalesce operator and Conditional operator in VB.NET
Is there a VB.NET equivalent for C#'s ?? operator?

是否有一个内置的vb.net等价于c空合并运算符?


是的,只要您使用的是VB 9或更高版本(包含在Visual Studio 2008中)。

您可以使用重载的If运算符的版本,只接受两个参数:

1
2
Dim myVar? As Integer = Nothing
Console.WriteLine(If(myVar, 7))

更多信息可以在vb.net团队的博客文章中找到。

(是的,这是一个运算符,即使它看起来像一个函数。它将编译为与C中的"正确的"空合并运算符相同的IL。

例子

1
2
3
4
5
6
7
8
9
10
11
Dim b As Boolean?
Console.WriteLine("{0}.", If(b,"this is expected when b is nothing"))
'output: this is expected when b is nothing.

b = False
Console.WriteLine("{0}.", If(b,"this is unexpected when b is false"))
'output: False.

b = True
Console.WriteLine("{0}.", If(b,"this is unexpected when b is true"))
'output: True.

根据这个问题,答案似乎是


我不相信有一个内置的vb.net等价物,但这里有一个答案:vb.net中的空合并运算符(8)


不,使用GetValueOrDefault,这就是它存在的原因!