メソッドに配列を渡そうとしています。配列には、ヌルにする必要があるオブジェクトが含まれています。このメソッドは、ループ内の各オブジェクトを単純に null にします。呼び出し元に反映するには、これが必要です。
サンプル コード (コードの良さとマイナーな構文上の問題は無視できます):
public class ABC
{
...
}
private void SomeMethod()
{
var toBeNulledObj1 = new ABC();
var toBeNulledObj2 = new ABC();
var arrayOfNullableObjects = new ABC[]{toBeNulledObj1 ,toBeNulledObj2};
NullingFunction(arrayOfNullableObjects);
}
private void NullingFunction(ABC[] arrayOfNullableObjects)
{
for(int i = 0; i< arrayOfNullableObjects.Length ; i++)
{
arrayOfNullableObjects[i] = null;
}
}
明らかに、toBeNulledObj1&toBeNulledObj2は null ではありませんが、以前の値を保持していますが、arrayOfNullableObjects現在は 2 つのnullオブジェクトがあります。ref & out は collection パラメーターにのみ適用されることに気付きました (ここでarrayOfNullableObjectsは、ref も必要ありません)。コレクションの代わりにそれらを渡そうとしましたparamsが、それも役に立ちません (ref と params を組み合わせることはできません)。
質問:メソッド内のオブジェクトのコレクション内の各オブジェクトまたは任意のオブジェクトを変更して、変更が呼び出し元に表示されるようにするにはどうすればよいですか? コレクション自体を変更しているわけではありません。コンテンツ/メンバーを変更しているのではなく、参照自体を変更していないことに注意してくださいtoBeNulledObj1(nullまたは新しいオブジェクトへ)。