Performance issues
Let ' s dig a little deeper. When data is passed to methods as value type parameters, a copy of each parameter are created on the stack. Clearly, if the parameter in question are a large data type, such as a user-defined structure with many elements, or the Me Thod is executed the many times, this could have a impact on performance.
In these situations it is preferable to pass a reference to the type, using the ref keyword. This is the C # equivalent of the C + + technique of passing a pointer to a variable into a function. As with the C + + version, the method has the ability-to-change the contents of the variable, and which may isn't always safe. The programmer needs to decide on the trade-off between security and performance.
Https://msdn.microsoft.com/en-us/library/4d43ts61 (v=vs.90). aspx
Performance cost of C # value type parameter passing