更新 : 2007 年 11 月
メソッド パラメータは、値や参照で渡すことも、out パラメータとして渡すこともできます。パラメータを値で渡すと、メソッドは呼び出し元のデータのコピーを取得し、呼び出し元のデータのコピーを変更できません。パラメータを参照で渡すと、メソッドは呼び出し元のデータへのポインタを取得します。このデータは、呼び出し元と共有されます。メソッドが参照パラメータを変更した場合は、呼び出し元のデータも変更されます。参照パラメータを使用すると、初期状態のデータがメソッドにより使用されます。out パラメータは参照パラメータに似ていますが、out パラメータは、呼び出し元にデータを返すためにのみ使用されるのに対し、参照パラメータは、メソッドからデータを受け取るだけでなく、メソッドにデータを渡すためにも使用できます。
out パラメータや参照パラメータの使用は避けてください。
out パラメータや参照パラメータを定義するメンバを使用するには、ポインタ、値型と参照型の微妙な違い、および out パラメータと参照パラメータの初期化に関する違いを理解することが開発者に求められます。
参照型を参照で渡さないでください。
オブジェクトを参照で渡すと、メソッドがオブジェクトを別のインスタンスに置換できるようになります。ほとんどのシナリオで、メソッドは与えられたオブジェクトを使用し、それを置換できないようにする必要があります。ただし、この規則にはいくつかの例外があります (参照を交換するために使用できるメソッドなど)。
Portions Copyright 2005 Microsoft Corporation.All rights reserved.
Portions Copyright Addison-Wesley Corporation.All rights reserved.
デザイン ガイドラインの詳細については、2005 年に Addison-Wesley から出版されている Krzysztof Cwalina、Brad Abrams 共著の『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries』を参照してください。