割り当てを行ったときの戻り値は何ですか?
たとえば、これはできますか?(つまり、割り当ては割り当てられている値を返します)
Dim a As Integer = 1
Dim b As Integer = 2
a = b = 3
今日、このコードを書いたときに疑問が生じました。
Dim updates = GetUpdates()
While updates.Count > 0
Foo.ApplyUpdates(updates)
updates = GetUpdates()
End While
こんな風に書けばよかったのに…
While (updates = GetUpdates).Count > 0
Foo.ApplyUpdates(updates)
End While
私はそれがきれいではないことを知っています...(そして私はまったく宣言しupdates
たことがありません)が、.NETで割り当てがどのように機能するかについて興味がありました...それは戻り値を持つ関数ですか?もしそうなら...それは何を返しますか?
編集
コードの最初のチャンクを試してみました。コンパイラは、b と 3 を比較した結果を a に代入すると解釈しているようです... もちろん、これはコンパイラ エラーです。
そして、2 番目のコード チャンクについては、=
型が何であれ、演算子が定義されていないupdates
ことがわかります。つまり、代入ではなく比較だと考えています。
私の質問に追加すると、なぜこのように機能するのですか? vb.net=
が 2 つの意味 (代入と比較) でシンボルをオーバーロードしているからですか?