Here's a summary of the different parameter modifiers and how the behavior changes for each, when using them with value-typed and reference-typed variables.
No modifier - value types
Copy of value passed to method
Method can read value
No modifier - reference types
Reference to object passed to method
Method can read/write object contents
ref modifier - value types
Reference to variable passed to method
Method can read/write variable
ref modifier - reference types
Reference to object reference passed to method
Method can read/write object contents
Method can change reference to point to new object
out modifier - value types
Reference to variable passed to method
Method must write new value to variable
out modifier - reference types
Reference to object reference passed to method
Method must change reference to point to new object