#272 – Differences Between ref and out Parameters
March 16, 2011 Leave a comment
Ref and out parameters in C# are implemented in the same way, in the compiled code. In both cases, a parameter is passed by reference, giving the method called a chance to change the underlying value.
ref and out parameters different purposes:
- ref parameters are for input/output – a value is passed into a method and a new value is passed out
- out parameters are for output – a value is passed out of a method
The compiler enforces the following rules:
- ref parameters
- A value must be assigned to parameter before method is called
- Parameter may be referenced inside method before being written to
- Parameter may be written to before returning from method
- out parameters
- A value may be assigned before method is called (but cannot be used inside method)
- Parameter may not be referenced inside method before being written to
- Parameter must be written to before returning from method