我正在尝试将数组传递给方法。该数组包含需要为空的对象。该方法将简单地使循环中的每个对象为空。我需要这个来反映来电者。
示例代码(代码的优点和小的语法问题可以忽略):
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
不为空,但保留它们的旧值,尽管arrayOfNullableObjects
现在有两个null
对象。我意识到 ref & out 仅适用于集合参数(在这里,arrayOfNullableObjects
它甚至不需要 ref)。我尝试将它们作为params
集合而不是集合传递,但这也无济于事(参考和参数不能组合)。
问题:如何更改方法内对象集合中的每个/任何对象,以便调用者可以看到更改?我不会改变收藏本身。请注意,我不会更改toBeNulledObj1
引用本身的内容/成员(更改为 null 或新对象)。