#270 – Passing a Reference Type by Reference
March 14, 2011 Leave a comment
When you pass a reference type by value to a method, you pass in a reference to the object. The method can change the object, but can’t change the reference.
public static void AnnotateMotto(Dog d)
{
// Change the dog's motto
d.Motto = d.Motto + " while panting";
}
You can also pass a reference type by reference, which means that the method can change not only the contents of the object pointed to, but change the reference, causing it to refer to a different object.
public static void FindNewFavorite(ref Dog fav)
{
fav.Motto = "No longer the favorite";
foreach (Dog d in AllDogs)
{
if (d.Motto.Contains("ball"))
fav = d;
}
}
Below is an example of calling this method.
Dog kirby = new Dog("Kirby");
kirby.Motto = "Retrieve balls";
Dog jack = new Dog("Jack");
jack.Motto = "Growl at people";
Dog myFav = jack;
Dog.FindNewFavorite(ref myFav);
Console.WriteLine(myFav.Name); // Kirby