75

可能的重复: VB.NET 中的
Coalesce 运算符和条件运算符
是否有 C# 的 VB.NET 等效项?操作员?

是否有等效于 C# 空合并运算符的内置 VB.NET?

4

4 回答 4

117

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

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

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

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

(是的,这是一个operator,尽管它看起来像一个函数。它将编译为与 C# 中“正确的”空合并运算符相同的 IL。)

例子

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.
于 2011-07-22T16:06:23.187 回答
11

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

于 2011-07-22T16:04:03.017 回答
-3

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

于 2011-07-22T16:05:30.900 回答
-3

没有。使用GetValueOrDefault;这就是它存在的原因!

于 2011-07-22T16:03:39.830 回答