ref
および out
パラメーター: いつどちらを選択するか? はじめに
プログラミングでは、変数を効率的に操作するためにパラメータ受け渡しセマンティクスを指定することが重要です。 out
キーワードと ref
キーワードはよく比較されるため、開発者はどちらをいつ使用するべきか混乱します。この記事は、out
と ref
の違いを明確にし、選択のガイドとなる具体的な例を提供することを目的としています。
ref
と out
: 違いを理解する
ref
と out
の両方で、メソッド パラメーターが外部変数を参照できるため、メソッド内で変更できます。ただし、それらの間には微妙な違いがあります:
ref
: パラメーターはメソッド呼び出しの前に初期化する必要があり、メソッド内で行われた変更は元の変数に反映されます。 out
: パラメーターを初期化する必要はありません。また、変更はメソッドの内部に限定され、元の変数には影響しません。 out
該当するシナリオ
は、主に次の状況での使用を考慮する必要があります: out
out
out
out
例: を使用して文字列 out
を取得します
<code class="language-C#">string a, b; person.GetBothNames(out a, out b);</code>
メソッドは 2 つの値を GetBothNames
と a
に取得します。 b
を使用すると、out
と a
の初期値が無視され、メソッドは変更された値のみを割り当てます。 b
例: 既存のコードのリファクタリング
<code class="language-C#">string name = textbox.Text; bool didModify = validator.SuggestValidName(ref name);</code>
を使用して ref
変数への参照を name
メソッドに渡す方法を示します。 SuggestValidName
は、メソッドが ref
の元の値を変更し、変更された値をメソッドの外で使用する必要があるため、適切です。 name
結論
と out
のどちらを選択するかは、メソッドのセマンティクスとコードの特定のニーズによって異なります。 ref
は、不必要なマーシャリングまたは初期化のオーバーヘッドを回避する必要がある場合に使用する必要があります。out
は、初期値が関連する場合、またはメソッド内の変更を呼び出し元に反映する必要がある場合に使用する必要があります。これらの違いを理解することで、開発者はこれらのパラメータを効果的に利用して、コードの効率を向上させ、曖昧さを減らすことができます。 ref
以上がC# の Ref パラメーターと Out パラメーター: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。