VB.NET に==
は比較用の演算子がないため、=
演算子は代入だけでなくその目的にも役立ちます。関数があり、その結果を変数に格納せずに、比較のブール結果を返すようにしたい:
Private Function foo() As Boolean
Dim bar As Integer = 1
Return bar = 2
End Function
戻り値:False
わかりましたが、 の値はbar
何ですか?
Private Function foo() As KeyValuePair(Of Boolean, Integer)
Dim bar As Integer = 1
Return New KeyValuePair(Of Boolean, Integer)(bar = 2, bar)
End Function
戻り値:False, 1
=
ステートメントのコンテキストが要求したときに比較を実行するように見えますが、これは保証されていますか? つまりbar
、この状況で が 2 に設定されることはないと確信できますか?
また、VB.NET では連鎖したインライン割り当てが許可されていないこともわかっています。この奇妙=
な動作は、私が注意する必要がある他の癖を引き起こしますか?