変数を値で返すメソッドと参照で返すメソッドの 2 つのメソッドがある場合、どちらがパフォーマンスが高いでしょうか?
myObj.Method1(out var);
また
var = myObj.Method2();
最初のバージョンの方が効率的だと思いますが、参照によって値を返すメソッドを常に作成する必要があるということですか? または、変数を値で返す理由はありますか?
ありがとう。
変数を値で返すメソッドと参照で返すメソッドの 2 つのメソッドがある場合、どちらがパフォーマンスが高いでしょうか?
myObj.Method1(out var);
また
var = myObj.Method2();
最初のバージョンの方が効率的だと思いますが、参照によって値を返すメソッドを常に作成する必要があるということですか? または、変数を値で返す理由はありますか?
ありがとう。
パフォーマンスの違いは計り知れないほど小さいか、存在しません。
2 つのバージョンのセマンティクスが異なると誤って想定しています。
参照型の場合、どちらのメソッドも参照を 1 回だけコピーします。
大きな値の型のout
場合、別の一時的なローカルが必要ないため、パラメーターは高速になる可能性があります。
結論に飛びつく前に、常に測定してください。
out
2 つの値を返す必要がない限り、パラメーターを使用しないでください。
参照型である限り性能差は全くありません。
ちなみに、値を返すようにメソッドを定義すると、値渡しにはなりません。型が値型でない限り、戻り値の型は常に参照渡しです。
どちらの場合も値は参照によって返されるため、参照型 (クラス) の違いはほとんどありません。
値型 (構造体) の場合、型に多くのフィールドが含まれていると違いが生じる可能性があります。その場合、out
パラメーターを使用して戻る方が少し高速です。