C# pass by value/ref?

As @rstevens answered, if it is a class, myCat is a reference. But if you pass myCat to a method call, then the reference itself is passed by value – i.e. the parameter itself will reference the same object, but it’s a completely new reference, so if you assign it to null, or create a new object, the old myCat reference will still point to the original object.

SomeMethod(myCat);

void SomeMethod(Cat cat)
{
    cat.Miau(); //will make the original myCat object to miau
    cat = null; //only cat is set to null, myCat still points to the original object
}

Jon Skeet has a good article about it.

Leave a Comment