C# で ref を使用する場合と不要な場合
C# では、参照型パラメーターを値で渡す場合、オブジェクトのコピーではなく、参照自体を渡すだけです。これは、C または C で値によってポインタを渡すことに似ています。パラメーター値の変更は関数内に限定されますが、基になるオブジェクトへの変更は呼び出し元に反映されます。
一方、パラメータが参照によって渡される場合、パラメータに加えられた変更は実際の変数への変更を表すため、呼び出し元に表示されます。
最初は混乱するように思えるかもしれませんが、値による受け渡しと参照による受け渡しの違いを理解することが重要です。一般に、絶対に必要な場合を除き、ref
/out
の使用を避けることを強くお勧めします。これらのメカニズムにより、実際には追加の戻り値を取得できるようになります。メソッドが過度に複雑になるのを防ぐために、その使用を最小限に抑えることが最善です。
質問で述べたケースでは、値が関数に渡されるときにオブジェクトのコピーが作成されないため、received_s
には ref
引数が必要ありません。ただし、関数はその値を変更し、その変更を呼び出し元に表示できるようにするため、remoteEP
には ref
が必要です。
C# のオブジェクトは基本的に実際のオブジェクトへのポインターであることに注意してください。オブジェクトが関数に渡されると、実際にはポインタが渡され、オブジェクトの内容の変更が可能になります。 ref
/out
は、関数内で新しいオブジェクトを交換または作成する必要がある場合にのみ使用してください。これはダブル ポインターの使用と同様です。
以上がC# `ref` キーワード: いつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。