4

すべてブール値を返すメソッドがたくさんあります。

1 つのメソッドが false を返す場合、特にそれらのいくつかは「コストのかかる」操作であるため、次のメソッドを呼び出す価値はありません。

どちらがより効率的ですか?

bool result = method1();
if (result) result = method2();
if (result) result = method3();
return result;

また

return method1() && method2() && method3();

私が理解しているように、メソッドの 1 つが false を返すとすぐに、2 番目のフォームの評価を停止する必要があります。

4

3 に答える 3

9

はい、あなたは正しいです。&& と ||の両方 C# のブール演算子は短絡演算子として機能します。値が決定されると、式の評価を停止します。不要な実行を停止します。

したがってreturn method1() && method2() && method3();、あなたの場合はより良いオプションです。評価されていないステートメントに何かがある場合、たとえば method3 の場合、副作用が発生する可能性があります。

ウィキペディアには、短絡演算子に関する言語に依存しない非常に優れた記事があります。

更新: C# では、論理演算子を短絡せずに使用する場合は、& と | を使用します。代わりに演算子。

于 2011-12-21T08:50:38.300 に答える
1

はい、2 つの方法は同等です。&& を使用すると、バッキング変数を使用した場合と同じ結果が得られます。

于 2011-12-21T08:51:51.703 に答える
0

2 番目は、最初の式が false に評価された後に式の評価を停止します。

両方の例は意味的に同等ですが、私の意見では2番目の例の方が読みやすいです。

于 2011-12-21T08:55:17.237 に答える