@Sven Groot: Sorry, "references types are already passed by reference" is simply wrong. Without the use of ref or out you are passing by value. What you are passing by value is a reference. It's a bit of a nit, because the rest of what you said is correct, but this is one that really should be understood.