違いは何ですか? 私は常に ByVal を使用していますが、いつ使用すべきか、いつ使用すべきでないかがよくわかりません...
ベストアンサー1
ByRef
= 友人に学期末レポート(原本)を渡すと、友人はそれに印を付けてあなたに返却することができます。
ByVal
= あなたは彼に学期末レポートのコピーを渡し、彼は変更を加えたものをあなたに返しますが、あなたはそれを自分で元のものに戻さなければなりません。
できるだけシンプルに。
ByRef を使用する理由:
ByRef は、渡すオブジェクトに POINTER を渡します。同じメモリ空間にいる場合、これはオブジェクトではなく「単語」だけを渡すことを意味します。渡すメソッドは元のオブジェクトに変更を加えることができますが、変更は元のオブジェクトにあるため、変更を戻す必要はまったくありません。大きなデータの受け渡しを高速化するのに役立ちます。ByRef を使用すると、オブジェクトを戻す必要がないため、FUNCTION (VB の場合) ではなく SUB を使用できるようになります。
ByRef を使用しない理由:
メソッドはオリジナルにアクセスできるため、変更は即時かつ永続的に適用されます。メソッドが失敗すると、オブジェクトが破損する可能性があります。ByVal を使用すると、コピーが作成され、そのコピー全体がメソッドに渡されます。その後、メソッドは情報を処理して、コピーを返すか、情報を報告するか、何も行いません。