• ベストアンサー

VB 2008: Return文について

Return IIf(i - p = 1, c, "") If i - p = 1 Then   Return c Else   Return "" End If みなさんなら、どちらを採用しますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

・IIfは関数であるので(Microsoft.VisualBasic.Interaction.IIf関数)、If文よりオーバーヘッドである。 ・IIf(i - p = 1, funcA(), funcB())とかくとfuncA, FuncB両方が実行されてしまう。 ということでIIfは使うな主義。 C#であれば、 return (i - p == 1) ? c : ""; と書きます。(長い場合はif文の方が読みやすい)

noname#140971
質問者

お礼

そもそもの質問はC言語のマニュアルのIIF文の警告文が頭にあったから。 関数オーバーヘッドの回避に関する記述が頭の片隅に。 この傍証を得たくて質問した次第です。 納得です。

その他の回答 (2)

回答No.2

二度と見ないならどっちでも、将来見るなら後者 全体がどうなってるかわかりませんが、こーゆー書き方もアリかも。 Dim c As String = "" If i - p = 1 Then   c = 入れたい値 End If return c

noname#140971
質問者

お礼

関数の戻り値の規定値機能がVB2008にも引き継がれていました。 ですから、ちょっと私の問題意識に過ちがありました。 回答に感謝です。

  • wolf03
  • ベストアンサー率22% (241/1086)
回答No.1

後者 見やすいことと、条件次第でreturn前に処理が必要になったときメンテしやすいので

noname#140971
質問者

お礼

もしや、Function の戻り値の規定値がと思ってテスト。 If i - p = 1 Then   Return c End If これで、次のような結果を得られました。 [イミディエイトウインドウ] ? FileGetChar("D:\Temp\Test.txt", 12)="" True 私自身は、IIf文は極力に使用しないでIF THEN ELSE文で書く主義。 ですから、皆さんの意向を知りたかった次第です。 が、そもそもFunction の戻り値の規定値の存在を考えればでした。

関連するQ&A