c#パラメーター転送:値送信と参照転送の詳細な説明C#では、バリュー伝送と参照転送は、プログラマーが必要とする基本概念です。非オリジナルタイプは一般に送信されると見なされますが、特定の非オリジナルオブジェクト(System.drawing.imageなど)の状況は必ずしもそうではありません。
System.drawing.imageオブジェクトをメソッドに渡して画像をロードすると、通常、元のオブジェクトが戻って以降にこれらの変更を反映することが期待されます。ただし、これはsystem.drawing.imageの場合ではありません。コールメソッドで行われた変更は、回復の受信者を広めないため、混乱を引き起こします。
「参照伝送」の真実この誤解は、参照の意味についての誤解から来ています。 C#では、オブジェクト自体は送信されません。逆に、それらの値は、初期パラメーターの値に渡されます。参照のタイプについては、これらの値はオブジェクト自体への参照です。したがって、コールメソッドでオブジェクト自体によって行われた変更は、コールパーティに表示されます。
しかし、重要なのは、パラメーター自体(つまり、オブジェクトへの参照)の値が参照に従って渡されないことに注意することです。つまり、パラメーターに新しい値が割り当てられ、別のオブジェクトを引用した場合、コールパーティはこの変更を表示しないことを意味します。
ソリューション:参照転送の表現
呼び出し部分自体が表示されるようにするには、呼び出しを渡す必要があります。パラメーターが値タイプであるか参照タイプであるかに関係なく、これはまたは
修飾子によって実装できます。これらの修飾子を使用することにより、パラメーターは実際に参照に従って渡され、メソッドで行う変更は呼び出し当事者に反映されます。
例
この概念を説明するために、次の例を考慮してください。
out
最初の例では、パラメーターは値で渡され、パラメーター自体の変更はコールパーティに表示されません。 2番目の例では、パラメーター自体に表示される参照パラメーターに従ってref
モディファイア式が表示されます。 3番目の例では、パラメーターは参照によって渡されますが、パラメーター値はオブジェクトへの参照であるため、オブジェクト自体の変更自体が表示されます。
結論
C#参照転送は微妙な概念であり、その動作は直感によって必ずしも予想されるとは限りません。送信オブジェクトと参照伝送値の違いを理解することは、予想どおりに実行されるコードに不可欠です。
以上がC#パラメーターの合格は実際に機能する方法:値と参照はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。