#278 – Passing an Array by Reference
March 22, 2011 Leave a comment
You can pass an array by reference to a method, using the ref or out parameter modifier, when you want the method to change the parameter to refer to a different array.
Here’s an example of a method that accepts an array and then overwrites the reference so that it points to a new array.
public static void DoubleADogList(ref Dog[] list)
{
Dog[] bigList = new Dog[2 * list.Count()];
int i2 = 0;
foreach (Dog d in list)
{
bigList[i2++] = new Dog(d.Name, d.Age, d.Motto);
bigList[i2++] = new Dog(d.Name + " Clone", d.Age, d.Motto);
}
// Change original reference to refer to new list
list = bigList;
}
We can call this method, passing it an array. When the method returns, the array variable points to the new (larger) array.
Dog d1 = new Dog("Kirby", 13, "Chase balls");
Dog d2 = new Dog("Jack", 17, "Bark");
Dog[] list = new Dog[] { d1, d2 };
Dog.DoubleADogList(ref list);
