You should always pass everything by value unless you specifically want the value of the variable being passed to be changed. Note that I said "the value of the variable". If the variable is a reference type then the value it contains is the memory address of an object. Only if you want to be able to pass out a different object to what was passed in should you pass by reference.

Anyway, this is quite a way off topic so I'll leave it there. If you have any further questions on this topic then I'd suggest starting a new thread.