3

変数を値で返すメソッドと参照で返すメソッドの 2 つのメソッドがある場合、どちらがパフォーマンスが高いでしょうか?

myObj.Method1(out var);

また

var = myObj.Method2();

最初のバージョンの方が効率的だと思いますが、参照によって値を返すメソッドを常に作成する必要があるということですか? または、変数を値で返す理由はありますか?

ありがとう。

4

3 に答える 3

6

パフォーマンスの違いは計り知れないほど小さいか、存在しません。

2 つのバージョンのセマンティクスが異なると誤って想定しています。
参照型の場合、どちらのメソッドも参照を 1 回だけコピーします。

大きな値の型のout場合、別の一時的なローカルが必要ないため、パラメーターは高速になる可能性があります。
結論に飛びつく前に、常に測定してください。

out2 つの値を返す必要がない限り、パラメーターを使用しないでください。

于 2011-01-30T21:04:17.997 に答える
4

参照型である限り性能差は全くありません。

ちなみに、値を返すようにメソッドを定義すると、値渡しにはなりません。型が値型でない限り、戻り値の型は常に参照渡しです。

于 2011-01-30T21:04:43.003 に答える
1

どちらの場合も値は参照によって返されるため、参照型 (クラス) の違いはほとんどありません。

値型 (構造体) の場合、型に多くのフィールドが含まれていると違いが生じる可能性があります。その場合、outパラメーターを使用して戻る方が少し高速です。

于 2011-01-30T21:16:51.620 に答える