web-dev-qa-db-ja.com

VB.NETに条件付き三項演算子がありますか?

Perl(および他の言語)では、条件付き3項演算子は次のように表現できます。

my $foo = $bar == $buz ? $cat : $dog;

VB.NETに同様の演算子がありますか?

411
Jim Counts

バージョンによって異なります。 VB.NET 2008のIf演算子は、3項演算子です(null合体演算子も同様)。これは導入されたばかりで、2008年以前は利用できませんでした。ここにいくつかのより多くの情報があります: Visual Basic If発表

例:

Dim foo as String = If(bar = buz, cat, dog)

[編集]

2008年以前は "IIf"でしたが、これは上記のIf演算子とほぼ同じように機能しました。

例:

Dim foo as String = IIf(bar = buz, cat, dog)
553
Beep beep

iifはVB 6でも、常にVBで利用可能でした。

Dim foo as String = iif(bar = buz, cat, dog)

それ自体は真の演算子ではなく、Microsoft.VisualBasic名前空間の関数です。

74
Kris Erickson

If()が最も近い等価ですが注意 "Option Strict off"を設定している場合は暗黙的な変換が行われます

たとえば、注意しないと、次のようなことをしたくなるかもしれません。

Dim foo As Integer? = If( someTrueExpression, Nothing, 2)

"foo"の値を0にします。

私は思います '?' C#の等価演算子ではなくコンパイルが失敗する

23
unnknown