2

たとえば、このメソッドがあります:LoadFunkyInfo(byval funkyData as string)そして、次のようなものを渡します: LoadFunkyInfo(giantTable.Rows.Item(0).Item("blahName"))。代わりにこれを行う必要がありますか?

dim foo as string = giantTable.Rows.Item(0).Item("blahName")
LoadFunkyInfo(foo)

メソッドをパラメーターとして渡すのではなく、メソッドを変数に割り当ててその変数をメソッドに渡す方が良いと、ずっと前にどこかで読みました。それはまだ本当ですか?それともまったく本当ですか?

注:VB.Net 3.5を使用しています

4

5 に答える 5

5

メソッドを渡しているのではなく、メソッドを呼び出した結果を渡しています。そこに一時変数を導入する唯一の利点は、デバッグを支援することです: 2 行目にブレークポイントを配置すると、 に渡す値を確認できますLoadFunkyInfo。それ以外は、2 つの呼び出しは同一です。

于 2012-05-21T19:06:34.093 に答える
4

まず第一に、メソッドをパラメーターとして渡していません。メソッドから返された値をパラメーターとして渡しています。

第二に、それは主に読みやすさの問題です。個人的には、ほとんどの場合、最初に変数に値を割り当てる方が読みやすいと思います。

于 2012-05-21T19:05:50.070 に答える
3

後者 (中間変数への代入) を実行すると、デバッグが容易になります。

割り当てにブレークポイントを設定し、結果を確認できます。

一部のコンパイラは、特定の最適化フラグ (Debug ではなく Release など) を使用してビルドするときに、中間変数を使用するバージョンを使用しないバージョンに変換します。

渡される値はメソッドではありません。中間変数の場合と同様に、メソッドから返された値です。返された値が割り当てられ、その値がパラメータとして渡されます。

于 2012-05-21T19:06:06.230 に答える
3

最初の関数によって返されたデータを複数回使用する場合は、ほとんど事実に依存すると思います。たとえば、次のようなものがあるとします。

LoadFunkyInfo(giantTable.Rows.Item(0).Item("blahName"))
LoadOtherFunkyInfo(giantTable.Rows.Item(0).Item("blahName"))

次に、メソッドを 2 回呼び出すのではなく、戻り値を保存することをお勧めします。

dim foo as string = giantTable.Rows.Item(0).Item("blahName")
LoadFunkyInfo(foo)
LoadOtherFunkyInfo(foo)

それ以外の場合、値を保存する必要はありません。

于 2012-05-21T19:07:23.250 に答える
2

どちらが読みやすいかは好みの問題です。まったく同じコードにコンパイルされます。与えられた例では、一時変数 'foo' を見たくないので、通常、次のステートメントで変数を渡すためだけに変数を定義するのは見苦しくなります。ただし、関数呼び出しに多くのパラメーターがあり、パラメーターが長い名前を持つ他の関数である場合、それも読みにくくなる可能性があります。

コードからあいまいさを取り除く場合にのみ使用してください。

于 2012-05-21T19:10:57.983 に答える