VB.Net 中的三元运算符

Unb*_*ble 4 vb.net

我是 VB.net 新手,想使用三元运算符。

 If prefixDt IsNot Nothing AndAlso prefixDt.Rows.Count > 0 Then
                Return True
            Else
                Return False
            End If
Run Code Online (Sandbox Code Playgroud)

我的尝试:

Return (prefixDt IsNot Nothing AndAlso prefixDt.Rows.Count > 0) ? True: False

错误:?不能在这里使用。

Jon*_*ert 5

2008 年之前的 VB.NET 没有三元运算符。它确实有一个三元函数, IIf(cond, truePart, falsePart),但作为一个函数,在函数决定返回哪个之前,都会对truePart和进行求值。falsePart

VB.NET 2008 中引入了一个新的运算符cond ? truePart : falsePart,它提供与类 C 语言中的三元运算符相同的功能。该运算符使用If关键字并用类似函数的语法表示:

safeQuotient = If(divisor <> 0, dividend / divisor, Double.PositiveInfinity)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,即使是零也是安全的,因为如果dividend / divisor是零,则完全被忽略,并且不会发生被零除的情况。truePartdivisordivisortruePart

对于您的示例,正​​如 @nabuchodonossor 所指出的,您只会将已经存在的布尔值True或转换False为相同的TrueFalse值,但为了完整起见,您可以完全按照@Steve所示将其写出:

Return If(prefixDt IsNot Nothing AndAlso prefixDt.Rows.Count > 0, True, False)
Run Code Online (Sandbox Code Playgroud)